Как внедрить пониженный сервис Angular в проект AngularJS? - PullRequest
0 голосов
/ 20 января 2019

Я следовал инструкции здесь по обновлению проекта angularjs.

Однако в кодовой базе, которую я действительно хочу обновить, уже есть классы ts для большинства служб, поэтому я следовал официальному руководству , которое заменяет телефонную службу angularjs классом ts. Так что теперь у меня есть класс ts для телефонной службы, но когда я запускаю приложение с ng serve, телефонная служба является неизвестным поставщиком.

  • Я попытался добавить "types": ["angular"] к своему tsconfig.
  • Я попытался объявить угловой в служебном файле
import { Injectable } from "@angular/core";
import { Observable } from "rxjs";
import { HttpClient } from "@angular/common/http";
import { IPhoneData } from "../../interfaces/IPhoneData";

// angular does not get resolved during compilation this way
// declare var angular: angular.IAngularStatic;

// Phone is an unknown provider this way
declare var angular: any;

import { downgradeInjectable } from '@angular/upgrade/static';

@Injectable()
export class Phone {
  constructor(private http: HttpClient) { }
  query(): Observable<IPhoneData[]> {
    return this.http.get<IPhoneData[]>(`phones/phones.json`);
  }
  get(id: string): Observable<IPhoneData> {
    return this.http.get<IPhoneData>(`phones/${id}.json`);
  }
}

angular.module('core.phone')
  .factory('phone', downgradeInjectable(Phone));

Как я могу получить класс обслуживания телефона, внедренный в компонент angularjs? Ссылка на мой репо .

1 Ответ

0 голосов
/ 20 января 2019

Где-то вдоль линии я потерял случай фабрики «Телефон», это должно было быть как ниже (также Наблюдения должны были быть обещаниями).

export class Phone {
  constructor(private http: HttpClient) { }
  query(): Promise<IPhoneData[]> {
    return this.http.get<IPhoneData[]>(`phones/phones.json`).toPromise();
  }
  get(id: string): Promise<IPhoneData> {
    return this.http.get<IPhoneData>(`phones/${id}.json`).toPromise();
  }
}

angular.module('core.phone')
  .factory('Phone', downgradeInjectable(Phone));
...