У меня есть служба, которая возвращает Promise<???>
для всех функций (кстати, это хорошая практика?) Например,
@Injectable()
export abstract class MyService {
abstract getCategories(): Promise<Category[]>;
}
У меня есть два impl, один локальный для тестирования в изоляции и другой удаленный для когдаdeployed.
@Injectable({
providedIn: 'root'
})
export class MyServiceLocalImpl implements MyService {
getCategories(): Promise<Category[]> {
return Promise.resolve(this.data.categories);
}
}
Теперь, когда я внедряю службу в компонент, я не могу получить значение Promise
, так как получаю ошибку времени выполнения:
import {MyService} from "../services";
@Component({
selector: 'some-component',
templateUrl: './some-component.component.html',
styleUrls: ['./some-component.component.scss']
})
export class SomeComponent implements OnInit {
private service: MyService;
private categories: Category[];
constructor(service: MyService) {
this.service = service;
}
ngOnInit() {
this.service.getCategories().then( categories => {
this.categories = categories;
});
}
}
Ошибка времени выполнения:
ERROR TypeError: this.service.getCategories is not a function
ОБНОВЛЕНИЕ это мой app.module.ts
@NgModule({
declarations: [
AppComponent,
SomeComponent
],
imports: [
BrowserModule,
HttpClientModule,
HttpClientXsrfModule.withOptions({
cookieName: 'Csrf-Token',
headerName: 'Csrf-Token',
}),
BootstrapModule,
FormsModule,
BrowserAnimationsModule
],
providers: [
AppService,
{
multi: true,
provide: HTTP_INTERCEPTORS,
useClass: AppHttpInterceptorService
},
{
multi: true,
provide: MyService,
useClass: MyServiceLocalImpl
}
],
bootstrap: [AppComponent]
})
export class AppModule {
}