我剛剛開始玩角度2,我遇到了一個小問題,我搜索了各種形式和angulars文檔。Angular 2將ajax調用響應轉移到另一個組件
我設法做了一個調用服務,然後我想在一個組件中,當我按下一個按鈕加載另一個組件與dynamicload組件,並有權訪問ajax結果。
的問題是,我可以T弄清楚如何做到這一點..
的問題是,如何才能讓結果使用觀測量或承諾方法的其他組件入店。
我剛剛開始玩角度2,我遇到了一個小問題,我搜索了各種形式和angulars文檔。Angular 2將ajax調用響應轉移到另一個組件
我設法做了一個調用服務,然後我想在一個組件中,當我按下一個按鈕加載另一個組件與dynamicload組件,並有權訪問ajax結果。
的問題是,我可以T弄清楚如何做到這一點..
的問題是,如何才能讓結果使用觀測量或承諾方法的其他組件入店。
如果我正確理解您的問題,您正在尋找一種方法將數據從請求插入另一個嵌套組件。
我希望這張圖片能夠爲你澄清這種情況下的數據流。
並且您的子組件應該預訂您在上一步中準備的模型。
ngOnInit() {
this.dataService.getSomeData()
.subscribe((data: IData) => {
this.data = data;
});
}
正上方如何在根組件從承諾對象設置模式向局部模型短的例子。
最新研究:
還有另一種方式,通過從API的數據來填充你的組件。您可以使用EventEmitter
從服務中發出事件,然後,您可以在您創建的組件內部訂閱此事件,以便他們將獲得一個數據,每次都會調用該服務。這是第一個答案中這個策略的很好的例子。 Service Events
希望它能幫助你,讓我知道你是否需要額外的信息!
只需創建一個服務,然後在需要的地方注入服務。 這是一個例子,如何要共享許多組件服務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);
}
}
}
一個完整的工作示例/猛擊可以在這裏找到:http://plnkr.co/edit/TR7cAqNATuygDAfj4wno?p=preview
坦克@tibs,但我已經做到了這一點..它現在是我在找什麼..順便說一句,我看到有一百萬種方法可以做到這一點 –
讓我們說你有一種形式,當submited調用API響應,然後結果必須轉到另一個組件,將使用響應 –
即使在這個來自plunker的例子中,我如何處理模板中的* ngFor中的響應 –
Mikki謝謝,但我可以在另一個組件不是兒童組件嗎?他們是無關的,一個注入另一個槽dynamiccomponentload .. –
@Obretin我不知道你的架構,有點難以理解爲什麼你需要這種情況下,如果你在哪裏使用ng1,我會說你應該使用'event broadcasting'但是ng2正在使用更嚴格的數據流概念。因此,您可以嘗試從父組件調用服務,或者可能提供更多詳細信息,並且我會幫您高興:) – Mikki
以及我可能做錯事情的東西,但我在頁面頂部有一個搜索框,以及何時我按下提交按鈕我想要在頁面中間加載另一個組件(或者從一開始就加載它),並且在從API接收到答案後,用答案填充組件模板。事情是,如果我打電話的組件呈現,但沒有阿賈克斯電話..如果您有任何意見,請告訴我..有點新的整個角2東西 –