我无法使指令在延迟加载的模块中工作.我已经阅读了文档,我只是将指令添加到主模块的声明数组中.该指令在该模块中按预期工作,但它在延迟加载的模块中不起作用.它甚至可以防止因模板错误而打开延迟加载的模块:
Can't bind to 'myHighlight' since it isn't a known property of 'p'
Run Code Online (Sandbox Code Playgroud)
这是我的Plunker.
点击"转到孩子"后查看控制台中的错误
我想在我的SPA WEBAPI应用程序中使用OWIN使用Facebook-SDK登录弹出窗口.VS 2013已经为facebook登录提供了一个很好的模板,但它高度依赖于我不喜欢的服务器端代码.通过使用Facebook-SDK,我可以登录到facebook并访问user_id,access_token等,在此之后,我将access_token发送到/ signin-facebook?code = [access_token],但是,我得到access_denied错误.我想这是因为我干预了owin工作流程并且不发送相关cookie.
总而言之,如果我已经拥有access_token ,是否可以绕过此图片中登录流程中的前3个步骤?
facebook-javascript-sdk asp.net-web-api single-page-application owin katana
我需要一个全局模态开启服务,可以从任何模块创建动态组件.我有多个模块,每个模块都有模态组件.我简化了我的项目结构:
AppModule
---ModalOpenerService
--ModalTemplate
---AModule
---ModalComponent1
---ModalComponent2
---SimpleComponent
---BModule
---ModalComponent3
---ModalComponent4
Run Code Online (Sandbox Code Playgroud)
模态开启者服务有这样的方法:
@ViewChild('modalContainer', {read: ViewContainerRef}) modalContainer;
showModal(component: Type<any>,data?:any){
let componentFactory = this.resolver.resolveComponentFactory(component);
this.modalContainer.createComponent(componentFactory );
}
Run Code Online (Sandbox Code Playgroud)
我希望我的ModalOpenerService能够创建任何模态组件并显示它.但问题是模态组件属于不同的模块,模态开启器无法在其注入器的组件工厂列表中找到它们.
No component factory found for ModalComponent1. Did you add it to @NgModule.entryComponents
Run Code Online (Sandbox Code Playgroud)
显然,ModalComponent1不是AppModule的成员.
我可以通过将工厂方法作为参数而不是像下面这样的组件类型来打开模态:
//In SimpleComponent, I call my ModalOpenerService to open modal1. Because
//the simpleComponent's parent injector (AModule's injector) can find Modal1,
//this.resolver can resolve Modal1.
showModal1(){
this.modalOpenerService.showModal(this.resolver.resolveComponentFactory(ModalComponent1));
}
Run Code Online (Sandbox Code Playgroud)
在ModalOpenerService中
@ViewChild('modalContainer', {read: ViewContainerRef}) modalContainer;
showModal(factory:ComponentFactory<any>, data?:any){
this.modalContainer.createComponent(factory);
}
Run Code Online (Sandbox Code Playgroud)
因此,模块创建自己的组件,并且能够在其entryComponents …
我在这里检查了ngStyle,ngClass指令,但我仍然无法理解这些是如何工作的:
<div [attr.role]="myAriaRole">
<div [class.extra-sparkle]="isDelightful">
<div [style.width.px]="mySize">
Run Code Online (Sandbox Code Playgroud)
内置指令不选择这样的属性:class.extra-sparkle.什么样的selector可以选择这样的html属性?哪个内置指令处理这个?
据我所知,dot(style.width.px)的html属性已经不合法了.显然,带方括号的字符串不会直接作为属性传递.但它在哪里完成?哪个指令捕获了这些符号?