当我订阅可观察的-由BehaviourSubject
从服务中投影出来的-尝试将订阅的值分配给本地变量时,它会给我error TS2322: Type '{}' is not assignable to type 'DatosAdmin'.
和error TS2739: Type '{}' is missing the following properties from type 'DatosAdmin': nombre, nombreCorto
>
我试图使局部变量类型为`localVariable:Observable,但这不是解决方案。
当我console.log()
订阅的数据时,它打印出与我的界面中定义的结构相同的结构。它显示{nombre:'someName',nombreCorto:“ SN”}。
final.component.ts <-这里this.datosAdmin
抱怨。
export class InternadoFinalComponent implements OnInit {
datosAdmin: DatosAdmin;
constructor(private intF: InternadoFormService) {}
ngOnInit() {
this.intF.adminAcumul$.subscribe(datos => (this.datosAdmin = datos));
}
}
interface.ts
export interface DatosAdmin {
nombre: String;
nombreCorto: String;
}
datos.service.ts
private adminAcumul = new BehaviourSubject({})
public adminAcumul$ = this.adminAcumul.asObservable();
adminNext(datosAdmin: DatosAdmin){
this.adminAcumul.next(datosAdmin);
}
答案 0 :(得分:0)
我在写问题时找到了答案。
我不必声明一个接口class
,而是在BehaviourSubject中指定_value。
interface.ts
export class DatosAdmin {
nombre: String,
nombreCorto: String
}
和datos.service.ts
private adminAcumul = new BehaviourSubject(new DatosAdmin);