我刚开始玩angular 2,遇到了一个小问题,我以各种形式搜索了它,还搜索了angulars文档。
我已经设法使一个服务,使一个调用,然后我想在一个组件中,当我按下一个按钮加载另一个组件与Dynamicload组件,并有权访问ajax结果。
问题是我不知道怎么做。。
问题是我如何使用可观察或promise方法使结果在其他组件中可访问。
只需创建一个服务,然后将服务注入所需的位置。下面是一个示例,说明如何在多个组件之间共享服务ajax数据,而无需两次请求:https://stackoverflow.com/a/36413003/2681823
服务:
@Injectable()
export class DataService {
constructor(private http: Http) { }
private _dataObs = new ReplaySubject<request>(1);
getData(forceRefresh?: boolean) {
// On Error the Subject will be Stoped and Unsubscribed, if so, create another one
this._dataObs = this._dataObs.isUnsubscribed ? new ReplaySubject(1) : this._dataObs;
// If the Subject was NOT subscribed before OR if forceRefresh is requested
if (!this._dataObs.observers.length || forceRefresh) {
this.http.get('http://jsonplaceholder.typicode.com/posts/2')
.subscribe(
requestData => {
this._dataObs.next(requestData);
},
error => this._dataObs.error(error));
}
return this._dataObs;
}
}
组成部分:
@Component({
selector: 'child',
template : `<button (click)="makeRequest()" class="btn">Click me!</button>`
})
export class Child {
constructor(private _dataService: DataService) { }
makeRequest() {
this._dataService.getData().subscribe(
requestData => {
console.log('ChildComponent', requestData);
}
}
}
可在此处找到完整的工作示例/plunker:http://plnkr.co/edit/TR7cAqNATuygDAfj4wno?p=preview
如果我正确理解了您的问题,那么您正在寻找将数据从请求插入到另一个嵌套组件的方法。
我希望这张图片能为您阐明本案例的数据流。
>
ngOnInit() {
this.dataService.getSomeData()
.subscribe((data: IData) => {
this.data = data;
});
}
上面只是一个简短的示例,介绍如何在根组件中从promise对象设置模型到本地模型。
新研究:
还有另一种方法可以通过api中的数据填充组件。您可以使用EventEmitter
从服务发出事件,然后,您可以在您创建的组件中订阅此事件,这样它们将获得数据,每次都会调用服务。在第一个答案中,这是一个很好的例子。服务活动
希望它能帮助你,让我知道如果你需要更多的信息!
我是RXJava的新手。在一个场景中,我希望调用第一个登录webservice(),如果成功,则希望调用另一个webservice()以获取用户信息。
问题内容: 如果用户查看我的JavaScript文件,复制函数的内容并使用AJAX向我的服务器发送请求,会发生什么情况?有没有办法适当地防止这种情况的发生? 问题答案: 防止这种情况发生的方法与针对 任何 Web请求采取的保护方法没有什么不同。您这样做是为了使您的站点需要某种形式的身份验证(即用户必须登录),并且如果请求未正确身份验证,则不要执行任何操作。 通常,当您发出AJAX请求时,cooki
我是Twilio的新手,我需要一些关于特定场景的帮助。一段时间以来,我一直试图为这个问题找到解决办法,但一直未能如愿。 我想使用一个移动(a)的Twilio号码打电话给移动(B)的另一个用户。我想这样做的方式,其中呼叫是由Twilio号码发起的,而不是由(a)的电话号码发起的。 换句话说,(A)从移动台拨Twilio号码,Twilio依次拨(B)并将(B)与(A)连接。 我已经将(A)拨打的Twi
问题内容: 我想使用Mockito测试下面的(简化)代码。我不知道如何告诉Mockito第一次失败,然后第二次成功。 我可以通过以下方式设置成功测试: 以及失败测试: 但是,如何测试一次失败(或两次)然后成功,就可以了吗? 问题答案: 从文档: 有时,对于同一方法调用,我们需要对不同的返回值/异常进行存根。典型的用例可能是模拟迭代器。Mockito的原始版本没有此功能来促进简单的模拟。例如,可以使
问题内容: 我正在尝试创建一个书签,单击后将向用户请求一些信息(本例中为url和其他几个字段),然后将该数据发送到服务器上的php页面,然后显示结果。 我想为此进行Ajax调用,以便实际上不重定向到新页面,仅获取数据,但我想我会遇到Ajax的“相同来源策略”限制…。基本上做同一件事的已知方法? 另外,传递参数的最佳方法是什么?我已经有一种机制可以将参数作为表单中的发布消息接收…有什么办法可以重用呢
如果使用基于回调的异步测试,如果done()多次调用Mocha,则会抛出错误。这对于捕获意外的双重回调非常方便。 it('double done', function(done) { // Calling `done()` twice is an error setImmediate(done); setImmediate(done); }); 运行上面的测试将给出以下错误消息: $ ./nod