我试图将一个全局变量作为Angular 2中的templateUrl字符串的一部分传递。我知道,全局变量可能不是最好的做事方式,但这是我能让它在当前工作的唯一方法
组件
var myConfig = require('../../../global.template');
console.log('template ' + window['templateid']);
@Component({
selector: 'app-thank-main',
templateUrl: '../../views/' + window['templateName'] + '/thank-main/thank main.component.html',
styleUrls: ['../../views/' + window['templateName'] + '/thank-main/thank-main.component.scss'],
providers: [MainFormComponent, SharedServices]
})
global.template.ts
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
let data = JSON.parse(xhttp.responseText);
window['templateName'] = data.template;
}
};
xhttp.open("GET", www.example.com/, true);
xhttp.send();
我的全局文件发出一个返回模板ID的api请求。我想将它与templateUrl连接起来,这样我就可以动态告诉我的应用程序要呈现哪个视图。我只是无法弄清楚如何解决异步问题。我的模板在window['templateName']
被赋予其值之前呈现。如果我对字符串进行硬编码并将其设置为window['templateName']
,则一切正常。
欢迎任何建议或替代方法。现在已经对我的头撞了一会儿。