我正在處理一個角度爲2的beta9應用程序,我試圖對組件進行交互處理,我有一個「開始」組件,它是一個無線電臺盒子按鈕,其中選定的項目將通過服務轉移爲「目標」組件,該組件將使用該選定項目過濾它將使用的數據。Angular2:通過服務在兩個組件之間傳遞對象
,從組件「開始」傳遞對象到服務正常工作的問題:
FormeService.ts:44
Object {id: 1, submenu: "type1", nb: 102, value: "Porte Fenêtre", class: ""…}
但是,從服務到組件「目的地」的對象是出現未定義:undefined
THI是我的代碼,
啓動組件:
@Component({
selector: 'radioFormesType1',
templateUrl: 'component1.html',
styleUrls: ['component1.css'],
directives: [MATERIAL_DIRECTIVES]
})
export class RadioFormesType1Component implements OnInit, OnDestroy{
//valeur initiale du radio box
data: any = {init: 'Fenêtre'};
//liste parsèe du service
items_list;
constructor(public formeService: FormeService) { }
ngOnInit(){
this.formeService.getjson().subscribe(people => this.items_list = people);
}
ngOnDestroy(){
}
public onSelectType1(selected:any){
console.log("valeur clickè "+selected.value);
this.formeService.changeForme(selected);
console.log("valeur selectionne passè au service"+selected.value);
}
}
和點擊的動作是在這裏onSelectType1()
:
<div *ngFor="#item of items_list">
<md-radio-button
*ngIf="item.id===1"
value="{{item.value}}"
class="{{item.class}}"
checked="{{item.checked}}"
(click)="onSelectType1(item)">
{{item.label}}
</md-radio-button>
</div>
</md-radio-group>
服務獲取該對象,並把它放在一個名爲「TYPE1」新的對象,這是我的服務,這是默認加載JSON數據的代碼:
import {Injectable,EventEmitter,Output} from 'angular2/core';
import {Http} from "angular2/http";
import 'rxjs/add/operator/map';
@Injectable()
export class FormeService{
/*valeur selectionnèe du type1*/
private _type1:any;
get type1():any {
return this._type1;
}
set type1(value:any) {
this._type1 = value;
}
constructor (public http : Http){
//this.changeForme(selected)
this.http= http;
}
/*parsing */
getjson(){
return this.http.get('dev/JsonData/formes.json')
.map(res => res.json())
}
/*actions*/
/*recuperer le type1 : fenetre Ou Porte Fentre*/
public changeForme(selected):any{
console.log(selected);
this._type1=selected
console.log("valeur type1 du service forme contient "+this._type1);
return this._type1;
}
和finnally該對象似乎是在這個級別不確定的,當我把它命名type1Recu
一個新的對象的「目標組件」:
@Component({
selector: 'checkboxFormesType2',
templateUrl: 'component2.html',
styleUrls: ['component2.css'],
directives: [MATERIAL_DIRECTIVES,RadioFormesType1Component]
})
export class CheckboxFormesType2 {
//liste parsèe du service
items_list;
// variable a en mettre le type1 selectionne
public type1Recu: any;
constructor(public formeService: FormeService) {
this.type1Recu = this.formeService.type1 ;
console.log(this.formeService.type1)
//console.log("type1Recu = " +this.type1Recu);
}
ngOnInit(){
//chargement de la liste
this.formeService.getjson().subscribe(people => this.items_list = people);
}
ngOnDestroy(){
}
ANy建議能夠加載目標組件中的整個對象?
感謝您的效應初探,由我有一些critera來驗證,所以依賴於選定的無線電項目,服務將加載特定的數據對於checbok組件,這些數據僅僅是複選框項的屬性和選項, – firasKoubaa
使其更清楚,因爲選擇A的無線電盒我有X和Y以及Z作爲複選框的項,並且foice選項B的收音機我有複選框的Y,Z,V,W項目,這樣複選框組件的創建取決於我在收音機中選擇的內容,並且這兩個組件項目都由服務存儲和分析通過json data.that正是purpose – firasKoubaa
@firasKoubaa你可以在你的問題中添加你有' checkboxFormesType2>'的組件的代碼嗎? –
Abdulrahman