1

我正在尝试在我的服务中创建一个变量,每当我注入此服务时都可以访问该变量。但是,我无法填充我login$的 BehaviorSubject 类型。我检查了thisthis,但我很难理解它是如何工作的。

零件

this.loginService.login = user.value.username; // OK
this.loginService.pass = user.value.password; // OK
this.loginService.emitLogin(user.value.username); // UNDEFINED - user.value.username is input field of form group

登录服务

export class LoginService {

  public login: string;
  public pass: string;
  public login$ = new BehaviorSubject(this.login);

  emitLogin(value: string) {
    this.login$.next(value);
  }

  constructor(private http: Http) { } 
}

另外,我想login$在我的DriverService. 这是我到目前为止所做的:

司机服务

    export class DriverService {    
      private login;

      constructor(private http: Http, private loginService: LoginService) {
        this.loginService.login$.subscribe(value => {
          console.log(value);
          this.login = value;
        });
      }
}

如何正确填充并使其可用于其他服务?

谢谢

4

1 回答 1

1

BehviorSubject 始终使用一些值进行初始化,但在您的代码中使用变量定义进行初始化。

 public login: string;
 public login$ = new BehaviorSubject(this.login);

做这样的事情

public login$ = new BehaviorSubject('');
emitLogin(value: string) {
    this.login$.next(value);
  }
于 2017-06-09T12:41:04.973 回答