我有一个实现CanActivate的AuthGuard(用于路由).
canActivate() {
return this.loginService.isLoggedIn();
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,CanActivate结果依赖于http-get-result - LoginService返回一个Observable.
isLoggedIn():Observable<boolean> {
return this.http.get(ApiResources.LOGON).map(response => response.ok);
}
Run Code Online (Sandbox Code Playgroud)
我如何将它们结合在一起 - 使CanActivate依赖于后端状态?
我有一个看起来像这样的简单形式
<form (ngSubmit)="save()" #documentEditForm="ngForm">
...
</form>
Run Code Online (Sandbox Code Playgroud)
并且需要提交表格并从外部检查其有效性
例如.以编程方式提交,或者<button type="submit">在<form>标记之外提交.
我有一个简单的布尔属性valid在我的对象document
,需要将其绑定到无线输入.
这是我到目前为止:
<input type="radio" name="valid" id="validTrue" (click)="document.valid = true" [checked]="document.valid"/>
<input type="radio" name="valid" id="validFalse" (click)="document.valid = false" [checked]="!document.valid"/>
Run Code Online (Sandbox Code Playgroud)
至少在点击时设置属性,但无线电输入不显示其状态.在我的浏览器的开发者控制台中查看我发现ng-reflect-checked已设置属性但它似乎不会对html radio-input产生影响.
我究竟做错了什么?
有没有人有一个工作"angular2-boolean-radio-input"片段?
我有一个组件ComponentA,显示元素列表.此列表在此期间被列入ngOnInit.
我有另一个组件ComponentB提供可能影响ComponentA中显示的元素列表的控件.EG可以添加元素.
我需要一种方法来触发ComponentA的重新启动.
有人有想法吗?
细节
A是一个HeaderBar,其菜单显示"savedSearchs"列表
@Component({
selector: 'header-bar',
templateUrl: 'app/headerBar/headerBar.html'
})
export class HeaderBarComponent implements OnInit{
...
ngOnInit() {
// init list of savedSearches
...
}
}
Run Code Online (Sandbox Code Playgroud)
B是一个可以保存搜索的SearchComponent
@Component({
selector: 'search',
templateUrl: 'app/search/search.html'
})
export class SearchComponent implements OnInit {
...
}
Run Code Online (Sandbox Code Playgroud) 有没有一种方便的方法来保存sessionStorage而无需手动监视属性更改和更新?
我有一个SearchComponent,例如属性"查询".
export class SearchComponent {
private query: String;
private searchResult: SearchResult;
...
Run Code Online (Sandbox Code Playgroud)
每次查询或searchResult发生更改(并且还有更多属性)时,我都必须手动更新sessionStorage.
sessionStorage.setItem('query', query);
Run Code Online (Sandbox Code Playgroud)
像自动完成工作的注释之类的东西会很棒:
export class SearchComponent {
@SessionStored
private query: String;
@SessionStored
private searchResult: SearchResult;
...
Run Code Online (Sandbox Code Playgroud)
我已经找到了类似的解决方案在这里.但是这个对于sessionStorage不起作用.
我有一个在 Wildfly 10 上运行的应用程序,需要更新版本的 jackson。简单地更新 Maven 依赖项是行不通的。Wildflys 自己的版本似乎会干扰......
有人有提示吗?
我有一个方法handleError(),如文档https://angular.io/docs/ts/latest/guide/server-communication.html#!#error-handling
private handleError(error: any) {
console.error(error);
console.log(this.loginService); // <- always undefined
return Observable.throw(error);
}
Run Code Online (Sandbox Code Playgroud)
我的问题是,this.loginService是未定义的,尽管它已在我的类中正确注入.它已经在其他方法中使用,但似乎在handleError中不可用.
http-catch调用方法的方式可能是问题吗?如果是这样,我怎么能绕过那个?处理错误时我需要执行一些逻辑.
这是一个关于如何将handleError方法设置为回调的示例(与文档完全一样)
this.http.get(url,
ApiRequest.ACCEPT_JSON)
.map(ApiHelper.extractData)
.catch(this.handleError);
Run Code Online (Sandbox Code Playgroud) 我刚刚更新到RC6并遇到以下错误:
zone.min.js:1未处理的Promise拒绝:模板解析错误:'sidebar'不是已知元素:1.如果'sidebar'是Angular组件,则验证它是否是此模块的一部分.2.如果"侧边栏"是Web组件,则将"CUSTOM_ELEMENTS_SCHEMA"添加到此组件的"@NgModule.schema"以禁止显示此消息.("
sidebar不是一个组成部分.只是我在我的一个模板中使用的html标签.它们看起来像这样:
...
<sidebar class="main-nav">
...
</sidebar>
...
Run Code Online (Sandbox Code Playgroud)
我尝试用CUSTOM_ELEMENTS_SCHEMA这样更新我的NgModule AppModule :
@NgModule({
declarations: [...],
providers: [...],
imports: [BrowserModule, routing, HttpModule, FormsModule, TranslateModule.forRoot()],
bootstrap: [AppComponent],
schemas: [ CUSTOM_ELEMENTS_SCHEMA ]
})
export class AppModule { }
Run Code Online (Sandbox Code Playgroud)
但这似乎没有做任何事情.
有没有人有想法或暗示?
我有一个用户可以编写文档的应用程序。内容以html格式交付,并且其中可能包含“未保存的内容”。例如,带有youtube视频的iframe。
我这样输出
<div [innerHtml]="getDocumentContentTrusted()"></div>
Run Code Online (Sandbox Code Playgroud)
成分法
getMainContentTrusted(){
return this.domSanitizer.bypassSecurityTrustHtml(this.documentContent);
}
Run Code Online (Sandbox Code Playgroud)
这样的作品。一切都可以正确显示,但是例如youtube-iframe就是documentContent的一部分,那么我就有副作用。在应用程序中任何位置的任何单击上,documentContent似乎都将重新加载。
关于如何避免这种情况的任何提示?
我有一个复选框,需要根据函数结果显示为选中,而不是将其绑定到对象属性.
这很容易,但不可能:
<input type="checkbox" ([ngModel])="category.selected">
Run Code Online (Sandbox Code Playgroud)
这不起作用,因为甚至会checked="false"导致复选框显示为已选中:
<input type="checkbox" [attr.checked]="isCategorySelected(category.id)"/>
Run Code Online (Sandbox Code Playgroud)
我需要这样的结果
<input type="checkbox">
<input type="checkbox" checked>
Run Code Online (Sandbox Code Playgroud)
取决于结果isCategorySelected(id).
任何帮助表示赞赏.