Angular 6调用函数从1个组件到另一个组件但数据没有改变
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Angular 6调用函数从1个组件到另一个组件但数据没有改变相关的知识,希望对你有一定的参考价值。
我是Angular 6的新手。我有header component
和dashboard component
。
在我的header comp
中,我有通知弹出窗口,其中包含接受和删除选项的通知列表。
在我的dashboard component
中,我有已接受通知的列表。
如果我从标题接受新通知,则应在仪表板中更新列表。
在我的标题组件中,我包括以下内容
import { DashboardComponent } from '../../pages/dashboard/dashboard.component';
//将仪表板组件包含在提供程序中
@Component({
selector: 'app-siteheader',
providers:[DashboardComponent ],
templateUrl: './siteheader.component.html',
styleUrls: ['./siteheader.component.css']
})
//在名为dashcomp
的构造函数中
constructor( private dashcomp: DashboardComponent, private dashboardservice: DashboardService, private authenticationService: AuthenticationService) { }
//通知接受行动
actionaccept(id){
this.authenticationService.acceptaction(id)
.subscribe(
data => {
// caled the dashboard function
this.loaddashboard();
}
);
}
//通过使用此函数调用仪表板组件的功能。
public loaddashboard() {
console.log('called');
this.dashcomp.dolist('future');
}
在仪表板组件中:
dolist(type) {
console.log('dasss');
this.dashservice.listengagement(type,this.page,this.limit)
.subscribe(
data => {
console.log(data);
this.futureloader = false;
this.futurelist = data['result'];
this.futuretotal = data['count'];
}
);
}
在仪表板html中,使用ngfor
显示结果
我的问题是什么::来自标题的仪表板功能tiggered。它显示了控制台。但是仪表板中的输出没有改变。我错过了什么?
您需要获取列表的Observable,并在html中使用带有ngFor的异步管道来显示列表。此外,您在标头组件中导入仪表板组件的方式也是不好的做法。更好的方法是为列表处理提供服务,并在两个组件中注入服务。
您可以使用rxjs主题
首先创建common.service.ts
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs';
@Injectable()
export class CommonService {
subject$ = new Subject<any>();
}
然后从你的header.component.ts
调用next方法来设置值,
constructor(private commonService: CommonService) { }
loaddashboard() {
console.log('called');
this.commonService.subject$.next('future');
}
并在dashboard.component.ts
订阅该事件
constructor(private commonService: CommonService) { }
ngOnInit() {
this.commonService.subject$.subscribe(data =>{
console.log('response from header is => ',data);
});
}
这是Stackblitz 演示
以上是关于Angular 6调用函数从1个组件到另一个组件但数据没有改变的主要内容,如果未能解决你的问题,请参考以下文章
使用使用 Angular 6 的服务将 JSON 文件从一个组件传递到另一个组件
如何从另一个组件调用一个函数,同时保持另一个组件在 Angular 中的通用性?