【问题标题】:Angular interface property is undefined角度接口属性未定义
【发布时间】:2020-05-04 13:30:24
【问题描述】:

为什么未定义接口属性“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;
}

这是根对象。

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

更新

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 中显示它时会引发错误。

【问题讨论】:

    标签: angular interface undefined


    【解决方案1】:

    如果在此之后和 ngOnInit 之前有任何代码尝试使用它,您会覆盖该对象,因此属性标题会丢失

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

    【讨论】:

    • 我想不言而喻,尝试初始化secondModel 4(!) 次以查看它是否有任何作用并不是一种非常健康的调试方式
    • 好吧,我不想说显而易见的:)
    • 谢谢你们,这是有道理的:) 但是,对于 secondModel,我在构造函数中声明了一个 const,并在那里设置了所有值,它仍然说标题,描述未定义..我`将发布更新
    • 可以添加 SidebarComponent 的模板和你传递 secondModel 的组件的代码+模板吗?
    • @Alexander Hey - 再次感谢您的帮助,我在第二天解决了问题。
    猜你喜欢
    • 2016-05-18
    • 2019-07-04
    • 2019-03-28
    • 2021-01-21
    • 1970-01-01
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多