Angular 为什么我不能在组件内指定和使用值?

Angular 为什么我不能在组件内指定和使用值?,angular,typescript,components,Angular,Typescript,Components,我有一个服务在组件之间共享变量,如下所示 import { Injectable } from '@angular/core'; import { Subject } from 'rxjs/Subject'; @Injectable() export class AppMessageQueuService { checkOutPageParams: Subject<Object>; constructor() { this.chec

我有一个服务在组件之间共享变量,如下所示

import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';

@Injectable()
export class AppMessageQueuService {    
    checkOutPageParams: Subject<Object>;
    constructor() {     
        this.checkOutPageParams = new Subject<string>();

    }

}
我可以在调试时看到分配给事件的值,这就是我如何获得第二个组件中的值

  this.appMsgService.checkOutPageParams.next({
            'userId': listItem.userInfo.userId,
            'listingId': listItem.listingId,
            'event': this.event
        });
 this.appMsgService.checkOutPageParams.asObservable()
            .switchMap((params: Object) => {
                let userId = params['userId'];
                let listingId = params['listingId'];
                this.event = params['event'];
                return this.checkOutInforService.getCheckoutDetails(userId, listingId);
            }).subscribe((checkoutDetail: CheckoutUserDetail) => {
                this.checkoutInfoDetails = checkoutDetail;
            });
            console.log(this.event) //this returns undefined
我也可以看到分配给事件的值。但是当我在上面几行之后打印一个console.log(this.event)时,它会显示undefined


问题是什么。如何将值分配给事件并在组件2中使用它。

我不确定这是否是最好的方法,但您可以尝试:

import 'rxjs/add/observable/forkJoin'


this.appMsgService.checkOutPageParams.asObservable()
            .switchMap((params: Object) => {
                return Observable.forkJoin ([
                  this.checkOutInforService.getCheckoutDetails(userId, listingId),
                  Observable.of(params)])
            }).subscribe((result) => {
                this.checkoutInfoDetails = result[0] as CheckoutUserDetail;
                this.params = result[1];
                ... do with params as you wish ...
            });

不,你不能。可观察对象是异步的,因此console.log在分配this.event之前执行。将语句移动到
subscribe
块内。如何使用该值,然后在subscribe块内使用该值。@pixelbits表示参数未定义发生错误时,您在哪里尝试使用
params
,但是当我在ui中绑定时,我看不到数据,知道吗 {{event}}

我能否直接将这些变量绑定到ui元素?