Javascript 无法使用@Input()传递道具

Javascript 无法使用@Input()传递道具,javascript,angular,typescript,Javascript,Angular,Typescript,我正在做一个非常基本的角度项目。我想在两个角度分量之间传递道具。在相关HTML文件中直接呈现组件的属性时,组件的属性工作正常。将其传递给另一个组件时,会显示错误 父组件的HTML文件 <app-todo-item *ngFor="let todo of todos" [todo]="todo"> </app-todo-item> 我得到的错误是: Error: src/app/components/todo-item/todo-i

我正在做一个非常基本的角度项目。我想在两个角度分量之间传递道具。在相关HTML文件中直接呈现组件的属性时,组件的属性工作正常。将其传递给另一个组件时,会显示错误

父组件的HTML文件

<app-todo-item *ngFor="let todo of todos" [todo]="todo">
</app-todo-item>
我得到的错误是:

Error: src/app/components/todo-item/todo-item.component.ts:11:12 - error TS2564: Property 'todo' has no initializer and is not definitely assigned in the constructor.

这来自新的Ts编译器。可以通过以下方式修复:

@Input() todo?: Todo;
告诉编译器此属性是可选的。或:

@Input() todo!: Todo;

告诉编译器这个属性将不会被取消分配的是来自新Ts编译器的。可以通过以下方式修复:

@Input() todo?: Todo;
告诉编译器此属性是可选的。或:

@Input() todo!: Todo;

什么告诉编译器这个属性不会被取消分配

您不应该使用深度导入,比如从'src/app/models/Todo'导入{Todo}使用like
从'./models/Todo'导入{Todo}
您不应该使用深度导入,比如从'src/app/models/Todo'导入{Todo}使用like
从'./models/Todo'导入{Todo}
最好使用
todo?
而不是
todo由于这是输入,因此也可以取消分配。最好使用
todo?
而不是
todo作为输入,也可以取消分配。