Конструктор форм "Не удается прочитать свойство (...) из null" - PullRequest
0 голосов
/ 29 апреля 2020

Model.ts

class A {
    b: B;
}

class B {
    someValue: string;
}

Component.ts

import { FormBuilder } from '@angular/forms';

this.formInput = this.formBuilder.group({
    'valueController': [this.a.b.someValue],
});

Ошибка

При первой загрузке страницы появляется следующая ошибка:

ERROR TypeError: Cannot read property 'someValue' of null

Я создаю страницу формы, чтобы создать сущность, в которой модель начинается пустой. Я попытался инициализировать b в конструкторе, но это не работает. Я не хочу устанавливать значение b в component.ts

Как мне сделать эту работу?

1 Ответ

0 голосов
/ 29 апреля 2020

Даниэль, я полагаю, у вас есть что-то вроде

this.a=new A()

Но это только объект empy, это как если бы вы написали

this.a={}

Если в вашем классе есть конструктор, такой как

class A {
    b: B;
    constructor()
    {
      this.b=new B()
    }
}

this.a will be an object with property b, but this.a.b is an empty object too.

Только если вы напишите в конструкторе B, например,

class B {
    someValue: string;
    constructor()
    {
      this.someValue="hello"
    }
}

Вы получите объект со значением

ПРИМЕЧАНИЕ: Обычно в Angular мы используем интерфейс, если единственная цель - «типизированные переменные», вы можете увидеть документы о классе или об интерфейсах

...