该应用程序可以很好地编译,但是在控制台中出现了上述错误。现在让我发布一些代码。
user.service.ts
mport { Injectable } from '@angular/core';
import { User } from '../models/user.model';
import { IUserService } from '../interfaces/user.interface';
import { Observable } from 'rxjs';
@Injectable()
export class UserService implements IUserService {
constructor(
private strategy: any
) { }
get currentUser$(): Observable<User> {
return this.strategy.currentUser$;
}
public setStrategy(val: any): void {
this.strategy = val;
}
public create(user: User): Observable<User> {
return this.strategy.create(user);
}
public retrieveOne(id: number): Observable<User> {
return this.strategy.retrieveOne(id);
}
// other CRUD methods
}
该代码位于应用程序的CoreModule
模块中,该模块的外观如下:
core.module.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthModule } from './auth/auth.module';
import { UserService } from './user/services/user.service';
@NgModule({
declarations: [],
imports: [
CommonModule,
AuthModule,
],
exports: [
AuthModule,
],
providers: [UserService]
})
export class CoreModule { }
我想尝试一下已经编写的内容,并决定在应用程序组件中执行此操作,它的ts文件具有一些方法和构造函数,我在其中注入了UserService
。
constructor(
private userService: UserService
) {
this.userService.setStrategy(new FirebaseUserStrategy());
}
我的应用程序模块仅导入core.module.ts
。
答案 0 :(得分:0)
您可以使用@Optional标记策略:
constructor(
@Optional private strategy: any
) { }