gpt4 book ai didi

javascript - Angular2 从服务调用组件

转载 作者:搜寻专家 更新时间:2023-10-30 21:30:23 24 4
gpt4 key购买 nike

我正在尝试从 Service 调用我的 Component 中的方法。这样做的正确方法是什么?我尝试使用 rxjs Subject 创建一个 Observable,但我无法启动它。

import {Subject} from 'rxjs/Subject';
export class MyService {
callComponent = function(value) {

let invokeEvent = new Subject();

invokeEvent.next({some:value})
}
}

在我的组件中

export class MyComponent {
constructor(private _myService: MyService) {
this._myService.invokeEvent.subscribe(value => console.log(value))
}

}

最佳答案

这是 plunker:http://plnkr.co/edit/WKSurRJMXo5JZOPrwSP5?p=preview

像这样改变你的服务

import {Subject} from 'rxjs/Subject';

@Injectable()
export class MyService {

invokeEvent:Subject<any> = new Subject();


callComponent(value) {
this.invokeEvent.next({some:value})
}
}

不要忘记在你的组件中提供它

@Component({
selector: 'my-component',
template: `
`,
providers: [MyService]
})
export class MyComponent {
constructor(private _myService: MyService) {
this._myService.invokeEvent.subscribe(value => console.log(value));
setTimeout(()=>{
this._myService.callComponent(1);
},1000);
}
}

此外,如果您希望此服务成为全局共享服务;将它放入(提供)到您的 bootstrap(旧)或 ngModule 中,以便它将在您的整个应用程序中共享相同的单例实例。

关于javascript - Angular2 从服务调用组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40393884/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com