我正在再次尝试将参数传递给我的应用程序.从RC5开始,我必须使用ngModule.(此解决方案:自从RC5以来,将asp.net服务器参数传递给Angular 2应用程序不再有效)
如何将参数传递给ngModule?
index.html的:
<script>
System.import('app').then(module => module.main('This is RIGHT'),
console.error.bind(console)
);
</script>
Run Code Online (Sandbox Code Playgroud)
main.ts:
import { browserDynamicPlatform } from '@angular/platform-browser-dynamic';
import { provide } from '@angular/core';
import { AppModule } from './app.module';
export function main(test: string) {
browserDynamicPlatform().bootstrapModule(AppModule, [{ providers: provide('Test', { useValue: test, }) }]);
}
Run Code Online (Sandbox Code Playgroud)
app.module.ts
import { NgModule, provide } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
@NgModule({
imports: [
BrowserModule
],
declarations: [
AppComponent
],
providers: [
provide('Test', { useValue: 'This is WRONG' })
],
bootstrap: [ AppComponent ]
})
export class AppModule {
}
Run Code Online (Sandbox Code Playgroud)
yur*_*zui 16
更新2
您可以在此处找到Webpack实现. 使用Angular 2和webpack将服务器参数传递给ngModule
Systemjs
更新1:
我们可以在函数的extraProviders
属性中传递数据browserDynamicPlatform
:
main.ts
export function main(test: string) {
browserDynamicPlatform([{provide: 'Test', useValue: test }])
.bootstrapModule(AppModule);
}
Run Code Online (Sandbox Code Playgroud)
这样app.module.ts中的createAppModule
函数就是多余的.
以前的版本
对于RC.5,您可以像这样添加一个方法(即createAppModule
)app.module.ts
:
app.module.ts
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppComponent } from './app.component';
export function createAppModule(test) {
@NgModule({
imports: [BrowserModule],
providers: [
{ provide: 'Test', useValue: test },
],
declarations: [AppComponent],
bootstrap: [AppComponent]
})
class AppModule { }
return AppModule;
}
Run Code Online (Sandbox Code Playgroud)
这样你的主要模块就像这样:
main.ts
import { browserDynamicPlatform } from '@angular/platform-browser-dynamic';
import { createAppModule } from './app.module';
export function main(test: string) {
browserDynamicPlatform().bootstrapModule(createAppModule(test));
}
Run Code Online (Sandbox Code Playgroud)
你的起点保持不变:
的index.html
<script>
System.import('app')
.then(module => module.main('This is RIGHT'),
console.error.bind(console)
);
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6619 次 |
最近记录: |