我希望通过一个HTTP请求在应用程序中集中加载一些数据,并希望将这些数据传递给多个单独的组件。我正在使用Behavior Subject类设置加载到共享服务中的可观察对象中的数据,并在单个组件中订阅它。
共享服务:
data: Observable<any>;
load_data(){
this.http.post('/myAPIMethod', {myInputs}).subscribe(
res => {
var dataSource=new BehaviorSubject(res);
this.data = dataSource.asObservable();
}, error => {
console.log(error);
});
}
app.component.ts:
constructor(private shared: SharedService) { }
ngOnInit(){
this.shared.load_data();
}
myComponent.component.ts
constructor(private shared: SharedService) { }
ngAfterViewInit(){
this.shared.data.subscribe(
res => {console.log(res)},
err => {console.log(err)}
);
}
由于我的app.component.ts和myComponent.component.ts文件是异步和独立加载,我得到一个错误,当它试图订阅'数据'观察myComponent甚至在应用程序加载数据之前。我得到一个未定义的错误订阅('data'是未定义的,它已经试图订阅)。
在myComponent文件中订阅“数据”可观察值之前,如何检查该值是否已设置?
使用主题
:
data = new Subject();
load_data(){
this.http.post('/myAPIMethod', {myInputs}).subscribe(
res => {
this.data.next(res);
}, error => {
console.log(error);
});
}
这样,您的组件可以在数据返回之前订阅主题
,并在收到超文本传输协议调用时发出数据。
另外,如果您不打算在subscribe函数中操作DOM/View元素,那么在ngOnInit
中调用它:yourComponet.ts
ngOnInit(){
this.shared.data.subscribe(
res => {console.log(res)},
err => {console.log(err)}
);
问题内容: 是否有任何功能或NG- 的东西 ,以检查是否有任何显示的复选框的检查? 我通过 ng-click =“ function()” 获得值,并将值传递给。我可以步行检查一下数组是否里面有值。 如果选中任何复选框,我想激活/禁用“下一步”按钮。 最简单的方法是什么? 问题答案: 您可以执行以下操作: 和一个模板: 工作:http://jsfiddle.net/cherniv/JBwmA/ 更
问题内容: 今天早上有一篇帖子问有多少人禁用JavaScript。然后我开始想知道可以使用什么技术来确定用户是否禁用了它。 有谁知道一些简短/简单的方法来检测是否禁用了JavaScript?我的目的是警告您,如果没有启用JS的浏览器,站点将无法正常运行。 最终,我想将它们重定向到可以在没有JS的情况下运行的内容,但是我需要将此检测作为占位符才能启动。 问题答案: 我假设你正在尝试确定是否提供Jav
我正在尝试检查用户单击按钮后是否加载了iframe。 我有 顺便说一下,我的iframe是动态创建的。它不会与初始页面加载一起加载。
问题内容: 我下面的代码创建一个新数组,并将其发送到chat(jFrame)。 但是我需要修改此代码以使其工作,如果打开了聊天jframe,则不要打开新的jFrame。而是在chat jframe中打开新的选项卡。聊天框的代码是: 问题答案: 我想知道如果该窗口依赖于另一个窗口,那么是否不应该使用JDialogs而不是JFrames。 一种解决方案是使用类字段来保存对窗口(JFrame或JDial
问题内容: 有什么方法可以检查Go程序是否在运行时启用了编译功能(例如,用于日志记录/信息目的)? 我检查了文档以及明显的位置(),但找不到任何东西。 问题答案: 据我所知,没有对此的简单检查,但是启用了 build标签后,您就可以利用它了。 我创建了一个新目录,并在其中放置了两个文件: : : 由于使用了build标签,将仅编译两个文件之一。 这也是围棋标准库是怎么做的(,),但由于这是一个内部
我有一个带有http请求的服务,它返回我的标题的可观察到的内容 servise.ts 在我的组件中,我有一个函数从service get Request设置。看起来是这样的: 问题是,有时我接收到带有空标签的标题,不需要显示它们,所以我需要对其进行过滤,并对此标题发送.delete()请求。我尝试了类似的方法(想法是在之前添加,然后在另一个subscribe内部调用。)差不多吧 但不确定这是不是个