Вернуть объект в Observable (Angular) - PullRequest
1 голос
/ 09 мая 2020

У меня есть большой проект с аутентификацией, но теперь он выключен. Я могу видеть страницу "/ admin" и все остальное, но есть блоки с *ngIf="isAdmin", происходящим из authentication.server. Мне нужно установить пользователя Admin по умолчанию и не проверять его из базы, когда аутентификация отключена, чтобы я мог видеть все блоки. Я знаю, что нужно сделать проверку и установить пользователя по умолчанию в get(): Observable<User> {}, но не понимаю, как это сделать правильно. Сначала я подумал, что просто создайте new User() с role = "UserRole.Admin", но не могу вернуть простой объект, причину Observable. Как мне вернуть пользователя по умолчанию? Был бы очень признателен за любую помощь!

Вот мой код:

в компонентах он выглядит так:

this.authentificationService.get()
  .subscribe((user: User) => this.isAdmin = user.role.name === UserRole.Admin);

authentication.server.ts

import { Injectable } from '@angular/core';
import { HttpClient} from '@angular/common/http';
import { Observable } from 'rxjs';
import { User } from '../shared/models/user';

@Injectable()
export class AuthenticationService {
  private backEndUrl = 'api/user';

  constructor(private http: HttpClient) { }
  get(): Observable<User> {
// need to return default User here in correct format
    return  this.http.get<User>(this.backEndUrl)
  }
}

User.ts

import { UserRole } from '../user-role.enum';
export class Role {
  constructor(id: number, name: UserRole) {}
}

export class User {
  constructor(
    id: number = null,
    firstName: string = '',
    lastName: string = '',
    email: string = '',
    role: Role = null
}

User-role.enum.ts

export enum UserRole {
  Admin = 'Admin',
  Manager = 'Manager',
  User = 'User'
}

1 Ответ

3 голосов
/ 09 мая 2020

Сначала я подумал, что просто создайте новый User () с role = "UserRole.Admin", но не могу вернуть простой объект, вызывающий Observable.

Вы очень близки нужно обернуть вашего пользователя внутри наблюдаемого. например,

const user = new User();
return Observable.of(user);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...