路由到地图内的用户详细信息

时间:2019-04-16 11:01:37

标签: angular ngrx

我正在尝试将普通用户路由到他的详细信息页面

我试图在地图内布线,但我想我做错了


import { Component, OnInit, OnDestroy } from '@angular/core';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { HttpClient } from '@angular/common/http';
import { environment } from '../../environments/environment';
import { Router } from '@angular/router';
import { AuthFacade } from 'libs/client/ngrx/src/lib/auth/+state/auth.facade';
import { Subscription, Observable, observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { User } from '@trilog/types';


@Component({
  selector: 'a-login',
  templateUrl: './login.component.html',
  styleUrls: ['./login.component.scss']
})
export class LoginComponent implements OnInit, OnDestroy {
  form: FormGroup;

  user$: Observable<User> = this.authFacade.user$;
  isAdmin$: Observable<boolean> = this.user$.pipe(map(user => user && user.roles.some(role => (role.key == 'admin') || (role.key == 'system'))));
  id$: Observable<String> = this.user$.pipe(map(user => user && user._id))

  error$: Observable<any> = this.authFacade.authError$.pipe(map((err: any) => {
    if (err) {
      return err.error ? err.error.message : err.message
    }
  }));

  private authSub: Subscription;

  constructor(
    private http: HttpClient,
    private fb: FormBuilder,
    private router: Router,
    private authFacade: AuthFacade,
  ) {
    this.form = this.fb.group({
      email: ['', Validators.required],
      password: ['', Validators.required]
    });

    this.authSub = this.authFacade.isAdmin$.subscribe(isAdmin => {

      if (isAdmin) {
        // console.log("Is admin?", isAdmin);
        this.router.navigate(['/']).then(() => console.log('nav done')).catch(err => console.log(err));
      }
      else {
        // this.router.navigate(['/users/', this.id$])
        console.log("Hello")
        return this.user$.pipe(map(user => this.router.navigate(['/users/',user._id])))
        // return this.authFacade.user$.pipe(map(user => user && this.router.navigate(['/users/',user._id])))
      //  return this.user$.pipe(map(user => user && this.router.navigate(['/users/',user._id])))
      }
    });
  }

  ngOnInit() {
  }

  ngOnDestroy() {
    if (this.authSub) { this.authSub.unsubscribe(); }
  }

  login() {
    if (this.form.valid) {
      this.authFacade.login(this.form.value);
    }

  }

}


现在,当以admin身份登录时,一切正常,但是当我以普通用户身份登录时,应该将我路由到用户的详细信息页面,而不是从控制台日志中获取“ Hello”

1 个答案:

答案 0 :(得分:1)

使用了Vitalii的建议

this.user$.pipe(map(user => this.router.navigate(['/users/',user._id]))).subscribe(..)