Angular 将数据传递给另一个具有输入的组件不会';I don’我没有按预期工作

Angular 将数据传递给另一个具有输入的组件不会';I don’我没有按预期工作,angular,Angular,我想将数据从一个组件发送到另一个组件。 我使用的是routerLink,我知道我们可以像这样在URL中传递数据: [routerLink]=“['/edit',id] 然后使用ActivatedRoute阅读 我想知道我们是否可以使用@Input将值传递给另一个组件?我试过了,但没有成功。 在我的A组件中,我正在这样做: 编辑 在我的B部分中,我这样做: @Input()名称:字符串; 构造函数(){} ngOnInit():void{ console.log(this.name) } M

我想将数据从一个组件发送到另一个组件。 我使用的是routerLink,我知道我们可以像这样在URL中传递数据:

[routerLink]=“['/edit',id]
然后使用ActivatedRoute阅读

我想知道我们是否可以使用@Input将值传递给另一个组件?我试过了,但没有成功。 在我的A组件中,我正在这样做:

编辑
在我的B部分中,我这样做:

@Input()名称:字符串;
构造函数(){}
ngOnInit():void{
console.log(this.name)
}
My console.log正在显示未定义的

你有什么办法帮我理解这一点吗?

应该是

<ComponentB [name]="'test'" [routerLink]="['/edit']">Edit</ComponentB>
编辑
其中,
ComponentB
是您试图向其传递值并使用
@Input
访问值的组件的名称。 或者您必须定义一个名为test的局部类变量,它将保存该值

[]
使用本地类变量并将特定变量的值传递给它

或者您可以这样做。
name=“test”
这不会编译传递给它的值,只需获取其中的内容即可

希望你清楚。

应该清楚

<ComponentB [name]="'test'" [routerLink]="['/edit']">Edit</ComponentB>
编辑
其中,
ComponentB
是您试图向其传递值并使用
@Input
访问值的组件的名称。 或者您必须定义一个名为test的局部类变量,它将保存该值

[]
使用本地类变量并将特定变量的值传递给它

或者您可以这样做。
name=“test”
这不会编译传递给它的值,只需获取其中的内容即可


希望您能明白。

我认为此方法仅适用于父组件和子组件。您试图从中传递数据的组件是父组件吗?
您可以改为使用服务。

我认为此方法仅适用于父组件和子组件。您试图从中传递数据的组件是父组件吗?
您可以改用服务。

有两种可能性:(1)
[name]
绑定应该在子组件标记中。例如
。而不是在
标记中。如果您在父组件中没有这样的父子关系,您就不能使用
@Input()
来传递数据。(2)如果您实际绑定的是
[名称]
在子组件标记中,确保
test
变量在组件控制器中定义了一些值,如
test=“sample value”
。您不能使用
routerLink
将数据传递到另一个组件的
@input
属性。有两种可能性:(1)
[name]
绑定应该在子组件标记中。例如,
。而不是在
标记中。如果在父组件中没有这样的父子关系,则不能使用
@Input()
传递数据。(2)如果实际绑定的是
[名称]
在子组件标记中,确保
test
变量在组件控制器中定义了一些值,如
test=“sample value”
。您不能使用
routerLink
将数据传递到另一个组件的
@input
属性。通常,您是正确的,即使第一个变量带有
[name]=”“test”
不应该被推荐,第二个
name=“test”
是应该做的。更新了我的答案@MoxxiManagarm。你能收回你的反对票吗?或者建议进一步编辑。一般来说,你是对的,即使第一个变量
[name]=“test”
不应该被推荐,第二个
name=“test”“
是一个好办法。更新了我的答案@MoxxiManagarm。你能收回你的否决票吗?或者建议进一步编辑。这应该是一个评论,而不是回答。由于声誉低下,无法在问题下添加评论:(这不提供问题的答案。一旦你有足够的信息,你将能够;相反,.-这应该是一个评论,而不是回答者由于声誉不高,无法在问题下添加评论:(这不提供问题的答案。一旦你有足够的信息,你将能够;相反,。)-