如何在组件中为稍后声明变量?

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 指定允许的类型来解决 nullMap.

map: Map | null = null;

现在允许任一项分配。请记住,在您的代码中,如果允许多种类型,您还必须在要访问该字段时断言该字段的类型。示例:

otherMethod(): void {
  if (this.map !== null) {
    this.map. // do something with the map field
  }
}