为了账号安全,请及时绑定邮箱和手机立即绑定

如何从 Angular 7 中的另一个组件更新视图?

如何从 Angular 7 中的另一个组件更新视图?

陪伴而非守候 2021-09-17 10:21:26
我想从app.component.html一部分的导航栏刷新我的卡片集,所以我准备了refresh()函数。当它被调用时,它会更新变量 Cards 但不会在mainView.html的 html 元素上的ngFor 中呈现它。如果我从mainView.html 中的html 元素调用(如(click)="loadCards()"),但如果在app.component 中完成相同的((click)="refresh()"),它会呈现更新的集合。 HTML。export class MainView implements OnInit {  constructor(private mMainController: MainController) {}  Cards: any = [];  ngOnInit() {    this.loadCards();  }  loadCards() {    this.mMainController.getAllCards().subscribe(      (data) => {this.Cards = data); },      (error) => {},      () => {console.log(this.Cards));  }...}export class AppComponent {  ...  constructor(private router: Router, private mMainView: MainView) {}  refresh(){    console.log('done');    this.mMainView.loadCards();  }  ...}更新尝试使用 @Input() 但无法正常工作。我按照接受的答案中的说明实现了 RefreshService,现在我可以从其他组件刷新内容。谢谢大家的快速回复。
查看完整描述

3 回答

?
翻过高山走不出你

TA贡献1875条经验 获得超3个赞

第一种方式:使用共享服务


您需要引入一项管理汽车状态的服务。


在这种情况下,引入这样的 a 可能会很有用BehaviorSubject:


您的服务:


private refresh: BehaviorSubject<boolean> = new BehaviorSubject<boolean>(false);


public getRefresh(): Observable<boolean> {


   return this.refresh.asObservable();

}


public setRefresh(value: boolean): void {


   this.refresh.next(value);

在您的 MainView 类中 - 首先:将您的服务作为依赖项注入 - 其次:在 OnInit 钩子中订阅您的可观察对象,例如:


this.myService.getRefresh().subscribe((value: boolean) => {

    if(value) {


      this.loadCards()

    }


})


在您的 AppComponent 类中


第一:将您的服务作为依赖项注入

第二:在你的 refresh 方法中设置你的 observable 的值。

例如这样的事情:



public refresh(){

    this.myService.setRefresh(true);

}


第二种方式:使用@Input Decorator 向下传递值。


查看完整回答
反对 回复 2021-09-17
?
慕工程0101907

TA贡献1887条经验 获得超5个赞

可以通过两种方式实现组件交互

(i) 如果组件彼此相关,则使用共享数据的通用且直接的方法。它通过使用@Input()装饰器来允许数据通过模板传递。

(ii) 如果组件彼此不相关,您可以communicate在两个组件之间使用共享服务


查看完整回答
反对 回复 2021-09-17
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

可以通过两种方式实现组件交互

(i) 如果组件彼此相关,则使用共享数据的通用且直接的方法。它通过使用@Input()装饰器来允许数据通过模板传递。

(ii) 如果组件彼此不相关,您可以communicate在两个组件之间使用共享服务


查看完整回答
反对 回复 2021-09-17
  • 3 回答
  • 0 关注
  • 178 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信