网站搜索

typescript - 如何在 Angular 2 中将变量从组件传递到服务?


我有两个组件(不是父子关系)。在我的第一个组件中,我有 partNumber

export class InfoComponent implements OnInit {
 @Output() partEvent = new EventEmitter();

 public partNumber: number;
 ngOnInit() {
 this.partNumber = this.activatedRoute.snapshot.queryParams['part'];
 this.partEvent.emit(this.planetNumber);

   }
}

所以它能工作,并给我 1、2 或 3

我还有第二个组件,我从 XML 获取数据,并且需要使用 this.partNumber

@Injectable()
export class DataService {
  @Input() planetNumber: string;
  // x2js = new X2JS();
  headers = new Headers({'Content-Type': 'application/json'});
  first = 'assets/first.xml';
  second = 'assets/second.xml';
  third = 'assets/third.xml';

  public x2js = new X2JS();

  constructor(private http: Http) {}

  get(): Observable<any> {
      // TODO: pass a URL as a parameter
      return this.http.get(this.first, this.headers).map((res) => res.text());
  }
}

我想做的事情像这样

      get(): Observable<any> {
        if(this.partNumber === 1){
          return this.http.get(this.first, this.headers).map((res) => res.text());
      } else if(this.partNumber === 2) {
        return this.http.get(this.second, this.headers).map((res) => res.text());
      } else {
        return this.http.get(this.third, this.headers).map((res) => res.text());
      }
}

所以,如果我有第一部分,我想先处理第一个 XML,如果我有第二部分——那么处理第二个,第三部分=第三个。

我尝试使用@Output,但它不起作用,所以我想我遗漏了什么。