Angular 变量错误未定义

标签 angular typescript

我的 Angular 程序有问题。 我总是得到未定义的错误变量。

这是在我的组件中定义变量

export class OrdersDetailComponent implements OnInit {
title = 'Order';
menus = [];
order: Array<{
    code: String
}>;
ngOnInit() {
    var id = this.route.params.subscribe(params => {
        var id = params['id'];

        if (!id)
            return;

        this.api.post('orders/get', { id: id })
            .subscribe((data) => {
                this.order = data.order;
                this.menus = data.menus;
            },
            response => {
                if (response.status == 404) {
                    this.router.navigate(['NotFound']);
                }
            });
    });
}

这是我的 html

<h3>{{ title }} #{{order.code}}</h3>

控制台总是报错

ERROR TypeError: Cannot read property 'code' of undefined
at Object.eval [as updateRenderer] (OrdersDetailComponent.html:3)
at Object.debugUpdateRenderer [as updateRenderer] (core.es5.js:13131)
at checkAndUpdateView (core.es5.js:12275)
at callViewAction (core.es5.js:12638)
at execComponentViewsAction (core.es5.js:12570)
at checkAndUpdateView (core.es5.js:12276)
at callViewAction (core.es5.js:12638)
at execEmbeddedViewsAction (core.es5.js:12596)
at checkAndUpdateView (core.es5.js:12271)
at callViewAction (core.es5.js:12638)

感谢您的帮助。

最佳答案

你正在发出一个异步请求,最初数据是未定义的,使用一个安全导航运算符(安全导航运算符可以用来防止 Angular 抛出错误,当试图访问不存在的对象的对象属性)检查结果是否存在,然后访问数据

<h3>{{ title }} #{{order?.code}}</h3>

编辑

创建一个类如下,保存为order.ts,

export class Order{
    code: string;
}

然后导入你的组件,

order : Order[];

关于 Angular 变量错误未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46966330/

相关文章:

html - HTML表单字段未显示触摸状态-Angular 7

javascript - 如何对 Vue 应用程序中的嵌套操作进行单元测试?

javascript - 防止 Angular 2 路由器将文字误认为参数

AngularDart 依赖注入(inject)

css - 使用 Angular 6 将图标添加到 mat-menu 的右上角

angular - 类型错误 : provideModuleMap is not a function ~ NestJS

angular - 以 Angular 转换 ogg 文件以在 Safari 中播放

angular - 构建后运行 Electron 应用程序时出错

javascript - typescript promise 循环后返回

javascript - 在 Angular 2 应用程序中使用 Microsoft BotFramework-WebChat 时遇到问题