在这种情况下,如何进行类型检查?第一:不可分配。然后,输入缺失

时间:2019-01-20 20:10:31

标签: angular typescript

当我订阅可观察的-由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);
}

1 个答案:

答案 0 :(得分:0)

我在写问题时找到了答案。

我不必声明一个接口class,而是在BehaviourSubject中指定_value。

interface.ts

export class DatosAdmin {
  nombre: String,
  nombreCorto: String
}

和datos.service.ts

private adminAcumul = new BehaviourSubject(new DatosAdmin);