AOT编译时报错模板解析失败,怎么回事?

宇阳酱~ 阅读 25

我在用 Angular 15 开发时启用了 AOT 编译,结果构建直接报错说模板里有个属性找不到。本地 dev 模式跑得好好的,一 build 就挂。

我检查了组件类确实有这个属性,也试过清 node_modules 重装依赖,还是不行。错误提示是 “Can’t bind to ‘user’ since it isn’t a known property of ‘app-user-card’”,但 user 明明是父组件传进去的啊!

<app-user-card
  [user]="currentUser"
  (edit)="onEditUser($event)"
>
</app-user-card>
我来解答 赞 11 收藏
二维码
手机扫码查看
1 条解答
IT人静薇
这问题太典型了。AOT 编译比 JIT 严格得多,你子组件的 user 属性没加 @Input() 装饰器吧?

去 app-user-card 组件里改成这样:

import { Component, Input } from '@angular/core';

@Component({
selector: 'app-user-card',
templateUrl: './user-card.component.html'
})
export class UserCardComponent {
@Input() user: User;
@Output() edit = new EventEmitter<User>();}


dev 模式有时会惯着你,AOT 可不会,该补的装饰器一个都跑不掉。
点赞
2026-03-19 08:01