【发布时间】:2020-03-04 10:15:48
【问题描述】:
我已经构建了一个 Angular 库,我可以将它导入到外部应用程序中。在我的库中存在一个名为“MainComponent”的组件,它有一个用于“objectId”的@Input 变量。
import { Component, Input } from "@angular/core";
import { Router } from "@angular/router";
@Component({
selector: "main-component",
templateUrl: "../templates/app.html",
styleUrls: ["../styles/app.css"],
providers: []
})
export class MainComponent {
@Input() objectId: string;
constructor() {
console.log("MainComponent constructor running!! objectId: " + this.objectId);
// 'objectId' is undefined in the constructor
}
}
当我将库导入另一个项目时,我会这样使用 MainComponent:
<main-component [objectId]="123456"></main-component>
但是,objectId 始终为undefined。我不确定我做错了什么 - 由于这是一个定制的 Angular 库,我必须做些不同的事情吗?
【问题讨论】:
-
它也是
undefinedinngOnInit和/或其他生命周期钩子吗? -
我对 ngAfterViewInit 进行了测试,但它仍然未定义。
-
您可以查看this stackblitz 并尝试找出您的不同之处。
-
另外,请注意使用
[objectId]="abcdef"会得到undefined。我们假设您实际上传递了[objectId]="123456"。 -
不,因为方括号告诉 Angular 它应该计算表达式
abcdef,即undefined(除非您在组件类中定义属性abcdef)。要绑定文字字符串,可以使用objectId="abcdef"或[objectId]="'abcdef'"。
标签: html angular input angular7