加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 在路由器插座组件中输入变量

发布时间:2020-12-17 07:15:00 所属栏目:安全 来源:网络整理
导读:我想知道你们现在是否可以使用@Input ngOnChanges()组合或在组件内部做同样的事情. 基本上,我在我的AppComponent和我的模板中设置了一个记录的:boolean变量: router-outlet/router-outletlogin [logged]="logged"/login 我想要的是能够在路由器插座中的组
我想知道你们现在是否可以使用@Input ngOnChanges()组合或在组件内部做同样的事情.

基本上,我在我的AppComponent和我的模板中设置了一个记录的:boolean变量:

<router-outlet></router-outlet>
<login [logged]="logged"></login>

我想要的是能够在路由器插座中的组件内观察记录的变量,所以我只在记录设置为true时才在这里制作东西.

我试过把< router-outlet [logged] =“logged”>< / router-outlet>但这不起作用,并且在服务中使用变量似乎不适合ngOnChanges()监视.

有人有想法吗?谢谢 !

解决方法

创建具有可订阅的可观察服务

import { Injectable } from '@angular/core';
import { Observable } from 'rxjs/Rx';
import { ReplaySubject } from 'rxjs/ReplaySubject';

@Injectable()
export class UserSessionService {

  private _loggedIn: ReplaySubject<boolean> = new ReplaySubject<boolean>();

  public logUserIn() {
    this._loggedIn.next( true );
  }

  public logUserOut() {
    this._loggedIn.next( false );
  }

  public getUserLoggedInObs(): Observable<boolean> {
    return this._loggedIn.asObservable();
  }

}

将服务添加到父模块(如果将其添加到多个模块,请小心,因为您可能使用不同的loggedIn值获得此服务的不同实例)

import { NgModule } from '@angular/core';
import { UserSessionService } from 'wherever/service/is/located';

@NgModule({
  providers: [ UserSessionService ]
})

export class AppModule { }

在你的控制器做类似的事情

public userLoggedInObs: Observable<boolean>;
constructor( private userSessionService: UserSessionService ) {
  this.userLoggedInObs = userSessionService.getUserLoggedInObs()
}

您可以在视图中添加

<div *ngIf="userLoggedInObs | async">
  User is logged in
</div>
<div *ngIf="!(userLoggedInObs | async)">
  User isn't logged in
</div>

当您调用该服务时,它将广播到当前订阅它的所有组件,然后将进行实时更新.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读