Как выполнить базовую инициализацию моих данных в приложении. Например, если пользователь вошел в систему и нажал F5 Мне нужно запросить текущие данные пользователя с сервера, прежде чем все запросы начнутся, как получить заказ пользователя и т. Д. В Angular 1 у нас есть директива .run()
для этого случая. Как я могу решить эту проблему?Инициализация базовой станции с угловым 2
ответ
Есть несколько способов сделать это:
Вы могли бы выполнить несколько запросов до самонастройки приложения Angular2. Такие первые запросы могут опираться на то, что вы сохраняете в локальном/сеансовом хранилище.
var injector = Injector.resolveAndCreate([HTTP_PROVIDERS]); var http = injector.get(Http); http.get('/userdetails').map(res => res.json()) .subscribe(data => { bootstrap(AppComponent, [ HTTP_PROVIDERS provide('userDetails', { useValue: data }) ]); });
Смотрите этот вопрос для более подробной информации:
Вы можете расширить запрос HTTP, чтобы прозрачно получить эти данные, когда запросы фактически выполняются. Это был бы ленивый подход.
@Injectable() export class CustomHttp extends Http { constructor(backend: ConnectionBackend, defaultOptions: RequestOptions, userDetailsService: UserDetailsService) { super(backend, defaultOptions); } request(url: string | Request, options?: RequestOptionsArgs): Observable<Response> { console.log('request...'); return this.userDetailsService.getUserDetails().flatMap((userDetails) => { return super.request(url, options); }); } get(url: string, options?: RequestOptionsArgs): Observable<Response> { console.log('get...'); return this.userDetailsService.getUserDetails().flatMap((userDetails) => { return super.get(url, options); }); } }
реализации этой
UserDetailsDetails
так:export class UserDetailsService { constructor(private http:Http) { } getUserDetails() { if (this.userDetails) { return Observable.of(this.userDetails); } else { return this.http.get(...) .map(...) .do(data => { this.userDetails = data; // Store in local storage or session storage }); } }
и зарегистрировать этот
CustomHttp
класс таким образом:bootstrap(AppComponent, [HTTP_PROVIDERS, UserDetailsService, new Provider(Http, { useFactory: (backend: XHRBackend, defaultOptions: RequestOptions, userDetailsService: UserDetailsService) => new CustomHttp(backend, defaultOptions, userDetailsService), deps: [XHRBackend, RequestOptions, UserDetailsService] }) ]);
Посмотреть эти вопросы для получения более подробной информации:
вещь также может быть сделана на уровне выходного отверстия маршрутизатора, если вы используете маршрутизацию. Возможно реализовать пользовательский маршрутизатор-выход, который проверяет информацию о безопасности/пользователе при активации маршрута. Я думаю, что это немного дальше от ваших потребностей ...
Смотрите этот вопрос для более подробной информации:
Вы могли бы принести текущие пользовательские данные перед вызовом Angular2-х bootstrap(...)
Вы можете также стрелять событие (используя Observable
, например), чтобы уведомить другие, что зарегистрированный пользователь теперь известен и инициировать только дальнейшие запросы после того, как это событие было получено.
- 1. Инициализация задержки с угловым вложением
- 2. Инициализация базовой модели
- 3. с ++ базовой инициализация массива из списка инициализаторов
- 4. Трассировка ближайшего вертолета к базовой станции
- 5. Получение информации о базовой станции в Android
- 6. Инициализация базовой сети в представлении
- 7. Изотоп с угловым 2
- 8. Диффублинг с угловым 2?
- 9. Локализация приемника с использованием трилатерации сильных сигналов базовой станции?
- 10. Как работает Ionic 2 с угловым 2?
- 11. Модулей с Угловым 2 CLI
- 12. События радиосвязи с угловым 2
- 13. Вопросы миграции с угловым 2
- 14. Как использовать TMS3705 RFID-транспондер базовой станции IC
- 15. Как использовать аутентификацию базовой станции в другом проекте firebase
- 16. Мой тест подключения к базовой станции отключен и отключен
- 17. Приложение с угловым 2 с помощью webpack
- 18. Как мы можем интегрировать ElevateZoom с угловым 2
- 19. Проблема с угловым 2 в контексте контекста
- 20. Сформировать таблицу с RowSpan использования Угловым 2
- 21. Переключатель отключен на входе с угловым 2
- 22. Как использовать ng2-бутстрап с угловым 2?
- 23. Невозможно связать радио кнопку с угловым 2
- 24. Как использовать библиотеку Async с угловым 2?
- 25. Индикатор хода бутстрапа с угловым 2
- 26. Логика инициализации логического устройства с угловым 2
- 27. Вопросы с угловым 2 обещанием объекта передачи
- 28. Использование конструкции материала с угловым 2
- 29. Как скомпилировать машинописный текст с угловым 2?
- 30. Подключить HTML-слайдер с угловым 2 компонентом
Есть, вероятно, много способов, но ваш вопрос довольно расплывчатый. –