将变量传递给角度应用程序是全局的

时间:2016-11-24 14:15:15

标签: angular

我需要将服务器生成的字符串传递给客户端,使用类似php嵌入到html中的内容,如:

<html>
    //head...

    //body...
    <script>
        System.import("app")
            .then(function(module) {
                module.main({authToken: '<?php echo $randomString; ?>'});
            })
            .catch(console.error.bind(console));
    </script>
    // end of body...
</html>

我在main.ts中得到了类似的东西:

export function main(randomString: string) {   
    platformBrowserDynamic([{provide: 'randomString', useValue: randomString}])
        .bootstrapModule(AppModule);
}

,在AppComponent中,如:

constructor(randomString) {
    console.log(this.randomString);
}

之后我得到了

zone.js:355 Unhandled Promise rejection: Can't resolve all parameters for AppComponent: (?). ; Zone: <root> ; Task: Promise.then ; Value: Error: Can't resolve all parameters for AppComponent: (?).(…) Error: Can't resolve all parameters for AppComponent: (?).

我如何正确地将变量作为提供者传递给bootstrap并在例如AppComponent或其他组件或服务中使用?

由于

1 个答案:

答案 0 :(得分:2)

要注入使用字符串键提供的值,您需要使用@Inject()装饰器

constructor(@Inject('randomString') private randomString:string) {