没有HTML的两个组件之间的角度共享

问题描述 投票:0回答:1

我有,1.topbar文件夹-包含topbar的html(1)和ts(1)2.page文件夹-包含页面的html(2)和ts(2)

现在我在html(1)中有一个按钮

<button (click)="refresh()" class="navbar-btn btn btn-success btn-md refresh">
    <span class="glyphicon glyphicon-refresh"></span> Refresh
</button>

现在我在ts(1)中有一个函数

refresh()
{
console.log("this is topbar html and ts");
}

现在我在html(2)中有一个功能

这里,我什么都不想做!

现在,我在ts(2)中具有一个功能

refreshEvent(){
console.log("i want use this function in html(1) BUT HOW??")
}

所以,当我单击按钮时,应调用refreshEvent()

angular typescript components
1个回答
0
投票
您可以使用rxjs中的Subject,

import { Observable, Subject } from 'rxjs'; @Injectable({ providedIn: 'root' }) export class MyService { private subject = new Subject<any>(); refresh() { this.subject.next(); } onRefresh(): Observable<any> { return this.subject.asObservable(); } }

B部分:

constractor(private myService: MyService){} this.$subscription = this.myService.onRefresh().subscribe(() => this.refreshEvent() ); ngOnDestroy() { this.$subscription .unsubscribe(); }

组件A:

constractor(private myService: MyService){} refresh() { //console.log("this is topbar html and ts"); this.myService.refresh(); }

如果他们有子父母关系,则可以使用输出事件,请参阅文档以获取更多信息:https://angular.io/guide/component-interaction
© www.soinside.com 2019 - 2024. All rights reserved.