问题描述
filteredOptions: Observable<string[]>;
以下行给出错误:
Property 'filteredOptions' has no initializer and is not definitely assigned in the constructor.
28 filteredOptions: Observable<string[]>;
解决方法
这是因为 typescript 2.7.2
包含一个严格的类检查,所有属性都应该在构造函数中声明。因此,要解决此问题,您可以:
- 只需添加一个爆炸符号 (!),例如:
name!:string;
- 将
"strictPropertyInitialization": false
添加到您的编译器选项中。 - 使用
filteredOptions: Observable<string[]> | undefined;
- 使用
filteredOptions?: Observable<string[]>
更多详情:
-
name!:string;
: 编译器相信我,我保证它不会是未定义的(可能导致不可预测的行为) -
"strictPropertyInitialization": false
:请编译器在任何地方停止您的严格检查 - 最后两个解决方案:编译器,
filteredOptions
可能有也可能没有值。在这种情况下,您有责任在您的案例中处理未定义的值(在您的 HTML 模板中使用?.
,null
和undefined
检查...等)