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

时间:2017-07-18 19:53:51

标签: angular typescript

我有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,但它不起作用,所以我想我错过了一些东西。

0 个答案:

没有答案