【发布时间】:2017-02-05 10:45:44
【问题描述】:
我是一个 js 新手,我想知道是否有人可以在你的 angular2 引导类中解释这样做的好处(我从 https://github.com/angularclass/angular2-webpack-starter 得到这个):
export function main(): Promise<any> {
return platformBrowserDynamic()
.bootstrapModule(AppModule)
.then(decorateModuleRef)
.catch(err => console.error(err));
}
// Ripped this from angularclass/hmr
if (document.readyState === 'complete') {
main();
} else {
document.addEventListener('DOMContentLoaded', main);
}
vs 只是做platformBrowserDynamic().bootstrapModule(AppModule)
我认为 environment.ts 中的 decorateModuleRef 代码只是在 prod 模式下返回标识,否则它在从注入器获取的每个组件引用上调用 enableDebugTools 是否正确?
let _decorateModuleRef = function identity<T>(value: T): T { return value; };
if ('build' === process.env.ENV) {
// Production
disableDebugTools();
enableProdMode();
PROVIDERS = [
...PROVIDERS,
// custom providers in production
];
IMPORTS = [
...IMPORTS
];
DECLARATIONS = [
...DECLARATIONS
];
} else {
_decorateModuleRef = (modRef: any) => {
const appRef = modRef.injector.get(ApplicationRef);
const cmpRef = appRef.components[0];
let _ng = (<any>window).ng;
enableDebugTools(cmpRef);
(<any>window).ng.probe = _ng.probe;
(<any>window).ng.coreTokens = _ng.coreTokens;
return modRef;
};
【问题讨论】: