大佬教程收集整理的这篇文章主要介绍了typescript – angular2 bootstrap与来自ajax调用的数据,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
let dependencies = [ //... a load of dependencies MyService ]; let injector = Injector.resolveAndCreate(dependencies); let service: MyService = injector.get(MyService); service.getData() // returns observable .toPromise() .then((d) => { // use data to append to dependencies bootstrap(App,dependencies) });
这工作正常,但我不喜欢两次使用依赖数组,有没有更简洁的方法这样做?我可以在bootstrap之后向应用程序注入器添加内容吗?另外我注意到bootstrap函数返回一个promise,我可以使用这个promise来阻止应用程序的引导直到我的ajax请求完成之后吗?
当然对于Injector我只能使用MyService所需的那些依赖项,但是这使得它非常脆弱,你可以想象.
一种方法可以是实现自定义引导程序而不是使用默认引导程序.类似的东西将应用程序创建和应用程序组件上的boostrapping分开.这样您就可以在两个任务之间加载一些东西.
这是一个示例实现:
function customBoostrap(appComponentType,customProviders) { reflector.reflectionCapabilities = new ReflectionCapabilities(); let appProviders = isPresent(customProviders) ? [BROWSER_APP_PROVIDERS,customProviders] : BROWSER_APP_PROVIDERS; var app = platform(BROWSER_PROVIDERS).application(appProviders); var service = app.injector.get(CompaniesService); return service.getCompanies().flatMap((companies) => { var companiesProvider = new Provider('companies',{ useValue: data }); return app.bootstrap(appComponentType,[ companiesProvider ]); }).toPromise(); }
并以这种方式使用它:
customBoostrap(AppComponent,[ HTTP_PROVIDERS,CompaniesService ]);
公司将自动在组件内注入,例如:
@Component({ (...) }) export class AppComponent { constructor(@Inject('companies') companies) { console.log(companies); } }
见相应的plunkr:https://plnkr.co/edit/RbBrQ7KOMoFVNU2ZG5jM?p=preview.
在这个时候,它有点hacky但这种方法可以作为功能请求提出……
编辑
看了ApplicationRef
课程的文档后,我看到有一个更简单的解决方案;-)
var app = platform(BROWSER_PROVIDERS) .application([BROWSER_APP_PROVIDERS,appProviders]); service.getCompanies().flatMap((companies) => { var companiesProvider = new Provider('companies',{ useValue: data }); return app.bootstrap(appComponentType,[ companiesProvider ]); }).toPromise();
这是相应的plunkr:https://plnkr.co/edit/ooMNzEw2ptWrumwAX5zP?p=preview.
以上是大佬教程为你收集整理的typescript – angular2 bootstrap与来自ajax调用的数据全部内容,希望文章能够帮你解决typescript – angular2 bootstrap与来自ajax调用的数据所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。