Angular свойство интерфейса не определено - PullRequest
0 голосов
/ 04 мая 2020

Почему свойство интерфейса 'title' не определено? хотя я пытаюсь присвоить ему значение.

Вот код. Это то, что я пытался проверить, установлен ли заголовок, но это не так ...

export class SidebarComponent implements OnInit {
    public theme = KTheme;
    public testModels: any[];
    secondModel: IKSecondColumnFeedList = {title: 'whatTitle'};
    constructor() {
        this.secondModel = { title: 'What?'};
        const kIconTest: KIcon = {icon: 'bell'};
        const kFeedFooter: IKFeedListFooter = {isTimeAgo: false, plainText: 'plain text'};
        const thirdModel: IKThirdColumnFeedList = {value: 20, actionClickTrigger: false, status: 
        'danger', tooltip: false, kIcon: kIconTest };
        this.secondModel = {actionClickTrigger: false, tooltip: false, footer: kFeedFooter, description: 
        'description'} as IKSecondColumnFeedList;
        const test: IKFeed = {  id: 'noriId', thirdColumn: thirdModel, secondColumn: this.secondModel };

        this.testModels = [
            { test }
          ];
     }

     ngOnInit() {
        this.secondModel = { title: 'What?'};
     }
}

И интерфейсы (модели).

export interface IKThirdColumnFeedList {
    value: number;
    status?: string;
    kIcon?: KIcon;
    tooltip?: boolean;
    actionClickTrigger?: boolean;
}

Это root object.

export interface IKFeed {
    id: string;
    secondColumn?: IKSecondColumnFeedList;
    thirdColumn?: IKThirdColumnFeedList;
}

UPDATE

export class SidebarComponent implements OnInit {
    public theme = KTheme;
    public testModels: any[];
    constructor() {
        const kIconTest: KIcon = {icon: 'bell'};
        const kFeedFooter: IKFeedListFooter = {isTimeAgo: false, plainText: 'plain text'};
        const thirdModel: IKThirdColumnFeedList = {value: 20, actionClickTrigger: false, status: 'danger', tooltip: false, kIcon: kIconTest };
        const secondModel = {title: 'someTitle', actionClickTrigger: false, tooltip: false, footer: kFeedFooter, description: 'description'} as IKSecondColumnFeedList;
        const test: IKFeed = {  id: 'noriId', thirdColumn: thirdModel, secondColumn: secondModel };

        this.testModels = [
            { test }
          ];
    }

    ngOnInit() {
    }
}

Приведенный выше код находится в компоненте боковой панели, и я передаю список в другой компонент, а затем пытаюсь отобразить значения от ngFor, и он говорит, что они все еще не определены. Что я делаю не так?

Если я буду консоль записывать в массив, он будет отображать все данные внутри, но по какой-то причине, когда я хочу отобразить его в HTML, он выдает ошибку.

enter image description here

1 Ответ

3 голосов
/ 04 мая 2020

Вы переопределяете объект, поэтому заголовок свойства теряется, если какой-либо код пытается использовать его после этого и до ngOnInit

this.secondModel = {actionClickTrigger: false, tooltip: false, footer: kFeedFooter, description: 
    'description'} as IKSecondColumnFeedList;
...