В Angular9 нет `$ rootScope`. Что можно использовать? - PullRequest
0 голосов
/ 10 апреля 2020

В AngularJS я использовал $ rootScope для передачи пользовательских данных, например:

$ rootScope.user = {
id: '4',
username: 'user'
...
};
$ rootScope.user.authenticated = false;

данные в $ rootScope заполнялись при каждом открытии или обновлении страницы с использованием запроса к SQL.

В Angular 9 я не нашел применения $ rootScope. Подскажите, где можно хранить такие данные в Angular 9 и с помощью чего можно реализовать эту функцию?

1 Ответ

0 голосов
/ 12 апреля 2020

В angular, если вам нужно что-то подобное, вы создаете сервис, предоставляете его в root и внедряете его, где хотите. Например:

Служба:


// Create the service (providedIn: 'root') makes it available globally
@Injectable({providedIn: 'root'})
export class UserService {
  user: any ={
    id: '4',
    username: 'user'
    ...
  };
}

Использование службы в компоненте:

@Component({...})
export class MyComponent implements OnInit {
  _isAuthenticated: boolean;

  // Inject the service
  constructor(private _userService: UserService) {}

  ngOnInit() {
    // Using the service
    this._isAuthenticated = _useService.user?.authenticated ?? false;
  }
}

PS: В приведенном выше коде используются две интересные функции машинописи (которые являются новыми, когда я пишу этот ответ): необязательное сцепление и Nulli sh Объединение. Вместо этого вы всегда можете использовать обычный троичный оператор:

this._isAuthenticated = _useService.user ? _useService.user?.authenticated : false
...