|
|
1
3
我相信你之所以挣扎是因为你似乎有兄弟组件试图操纵数据,其中没有一个是真正的数据所有者。角度尝试强制 Unidirectional Data Flow 这仅仅意味着数据从父级流向子级,而不是从子级流向父级。解决问题的最简单方法是让“拥有”用户数据的父组件和子组件绑定到数据以显示它并发出事件来操作它。 以您的场景为例: 应用组件
app.component.html软件
标题.component.ts 从'@angular/core'导入{component,oninit,input};
header.component.html标题
测试组件 从“@angular/core”导入{component,oninit,output,eventemitter};
test.component.html测试组件
注: 至于从本地存储加载用户信息,我将使用一个服务来处理。加载用户数据的位置和方式并不是显示和操作数据的组件真正关心的问题。将该逻辑移动到具有适当接口的服务(如果数据可能来自远程位置,则可能返回可观察数据)将允许您无缝地将基于本地存储的服务替换为基于http的服务,以强制将所有分数传输到/从服务器发送,而不更改组件中的代码行。它还允许您交换模拟服务以进行测试,这样本地存储就不需要播种以使测试通过(即,您的测试必须对要通过的组件的实现了解得更少,这样在实现更改时它们就不会那么脆弱) |
|
|
2
2
您正在将HeaderComponent添加为提供程序,因此它可能正在创建该组件的新实例。如果您有一个现有的headercomponent,则需要获取该实例的一个hold,因此使用服务将有助于保留对该组件实例的引用。 最好将分数全部转移到服务中,并使用主题更新其值。查看他们的文档: https://angular.io/guide/component-interaction#parent-and-children-communicate-via-a-service 是的。实际上,文档中列出的任何策略都应该对您的情况有用。 |
|
3
0
因为您试图从一个组件获取信息并在另一个组件中显示,所以应该使用事件。
显示组件:
然后,
|
|
|
4
0
尝试实现对headercomponent的更改
我建议您使用角度服务或@output,并在根中发出事件,并在头中监听它们。 请看一下角反应性的基本类型。 onchanges监听器用于侦听在角度之外所做的更改(如库)。 你应该把这当作最后的手段! |
|
|
5
0
我想问题在于
请尝试下面的代码,找出导致问题的原因。 标题.component.ts
header.component.html标题
如果
身份证件
在视野中
身份证件
在控制台中是不同的,这意味着您没有更新
请试试这个告诉我结果。谢谢您。 |