如何在组件中为稍后声明变量?
How to Declare a Variable for Later in a Component?
我有一个组件,其中的变量直到 ngAfterViewInit 才被分配。我也想在 init 之外使用这些变量,但我不知道如何使用。 (下面是我的想法,但它给出了一个错误,说类型 'Map' 不能分配给类型 'undefined')
export class DummyComponent implements AfterViewInit {
map = null;
mousePosition = undefined;
ngAfterViewInit(): void {
this.map = new Map({
target: 'map',
layers: [layer],
view: view
});
}
update(){ this.map.on(...) => {...}}
这是类型安全错误。默认情况下,新的 angular 项目将创建一个 tsconfig.json
文件,其设置为 strict
to set to true
. This, in turn, will control the setting noImplicitAny
并将其设置为 true
,这意味着如果您不限制 variable/field 实例明确它将被限制为分配值的类型。
当您将 map
分配给 null
时,默认允许的类型现在是 null
,因为您在定义字段时没有定义类型。您可以通过为字段 map
指定允许的类型来解决 null
和 Map
.
map: Map | null = null;
现在允许任一项分配。请记住,在您的代码中,如果允许多种类型,您还必须在要访问该字段时断言该字段的类型。示例:
otherMethod(): void {
if (this.map !== null) {
this.map. // do something with the map field
}
}
我有一个组件,其中的变量直到 ngAfterViewInit 才被分配。我也想在 init 之外使用这些变量,但我不知道如何使用。 (下面是我的想法,但它给出了一个错误,说类型 'Map' 不能分配给类型 'undefined')
export class DummyComponent implements AfterViewInit {
map = null;
mousePosition = undefined;
ngAfterViewInit(): void {
this.map = new Map({
target: 'map',
layers: [layer],
view: view
});
}
update(){ this.map.on(...) => {...}}
这是类型安全错误。默认情况下,新的 angular 项目将创建一个 tsconfig.json
文件,其设置为 strict
to set to true
. This, in turn, will control the setting noImplicitAny
并将其设置为 true
,这意味着如果您不限制 variable/field 实例明确它将被限制为分配值的类型。
当您将 map
分配给 null
时,默认允许的类型现在是 null
,因为您在定义字段时没有定义类型。您可以通过为字段 map
指定允许的类型来解决 null
和 Map
.
map: Map | null = null;
现在允许任一项分配。请记住,在您的代码中,如果允许多种类型,您还必须在要访问该字段时断言该字段的类型。示例:
otherMethod(): void {
if (this.map !== null) {
this.map. // do something with the map field
}
}