#angular #angular7
#угловатый #angular7 #angular
Вопрос:
Проблема Токен PLATFORM_INITIALIZER не работает и не выполняется после инициализации платформы.
согласно документации, мы можем использовать этот токен для выполнения чего-либо после инициализации / начальной загрузки приложения.
В документации A function that will be executed when a platform is initialized.
также говорится, что существует очень много документации об использовании этого токена и примеров. https://angular.io/api/core/PLATFORM_INITIALIZER
Уже пробовал, я пробовал использовать PLATFORM_INITIALIZER аналогично тому, как он проходил модульное тестирование, но не добился никакого успеха. https://github.com/angular/angular/blob/f8096d499324cf0961f092944bbaedd05364eea1/packages/platform-browser/testing/src/browser.ts
ссылка на стекблитц https://stackblitz.com/edit/angular-zza3af?file=src/app/app.module.ts
function initBrowserTests() {
window.alert('PLATFORM_INITIALIZER called');
}
const featureFlagsFactory = () => {
window.alert('APP_INITIALIZER called');
return () => {
return {};
};
};
export const appInitializers = [
{
provide: APP_INITIALIZER,
useFactory: featureFlagsFactory,
multi: true
},
{
provide: PLATFORM_INITIALIZER,
useValue: initBrowserTests,
multi: true
},
];
@NgModule({
providers: [ appInitializers ],
imports: [ BrowserModule, FormsModule ],
declarations: [ AppComponent, HelloComponent ],
bootstrap: [ AppComponent ],
})
export class AppModule { }
Ожидание initBrowserTests() Должно было быть вызвано Fn, которое я хотел бы использовать для инициализации моего AuthService.
Ответ №1:
Предполагается, что этот токен должен передаваться в createPlatformFactory
или через extraProviders
него, когда мы вызываем, например platformBrowserDynamic
:
platformBrowserDynamic([{
provide: PLATFORM_INITIALIZER,
useValue: initBrowserTests,
multi: true
}]).bootstrapModule(AppModule)
Комментарии:
1. Спасибо @yurzui, он работает, но ИНИЦИАЛИЗАЦИЯ PLATFORM_INITIALIZER происходит до APP_INITIALIZER, есть ли какой-либо другой токен, который я могу использовать для начальной загрузки моего AuthService после инициализации приложения.
2. Конечно, это происходит и раньше, поскольку платформы создаются первыми
3. знаете ли вы какой-нибудь токен, который я могу использовать для инициализации моего AuthService после загрузки приложения?
4. @yurzui у вас есть внутренняя информация? откуда вы это знаете? 🙂 когда вы говорите «например», есть ли у вас другой пример?