路由器+将变量从子组件改为父组件[Angularjs 2]
Router + change variable from child to parent component [Angularjs 2]
我有这样的app.component
:
import { Component, Input } from '@angular/core';
import {AuthTokenService} from './auth-token.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(
private Auth: AuthTokenService) { };
isGuest: any = this.Auth.canActivate();
title = 'app works!';
}
我需要从子组件login.component
中更改isGuest
var
在app.component.html
中我有这样的:
<h1>
{{isGuest}}
</h1>
<router-outlet></router-outlet>
我试图改变它与@Output and Emitter
,但它不工作,因为我使用角路由器
我会更新auth服务,像Angular文档(https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service)那样提供一个可观察对象。
import { Injectable } from '@angular/core';
import { Subject } from 'rxjs/Subject';
@Injectable()
export class AuthService {
/* ... */
private canActivateSource = new Subject<string>();
public canActivate$ = this.canActivateSource.asObservable();
/* ... */
authenticate() {
/* ... */
if (authenticated) {
this.canActivateSource.next(true);
} else {
this.canActivateSource.next(false);
}
/* ... */
}
/* ... */
}
那么你可以在你的app.component
中这样订阅:
this.Auth.canActivate$.subscribe(canActivate => {
/* do something with canActivate */
});
在模板中,使用async
管道:
{{ Auth.canActivate$ | async }}
https://angular.io/docs/ts/latest/api/common/index/AsyncPipe-pipe.html 相关文章:
- AngularJS'不可知论者;和'组件'指令
- AngularJS适合构建组件
- AngularJS组件和cms驱动应用程序的最佳实践
- AngularJS 组件用户
- AngularJS - 接收动态内容的组件
- React 组件中的 AngularJS 过滤器
- AngularJS:在组件之间进行通信的最佳实践是什么?
- AngularJS服务初始化并获取第三方组件
- AngularJS通过嵌套组件向上传播更改
- AngularJS,从指令迁移到组件
- Angularjs:验证带有或不带有表单的指令组件
- AngularJS在父元素更改时更新子组件
- 如何将 angularJS 指令/组件作为属性传递给其他指令/组件
- AngularJS 1.5:组件获胜't加载http数据
- AngularJS应用程序组件(模块、工厂、控制器)定义的确切工作方式
- angularjs组件的执行顺序是什么
- 我可以使用AngularJS's$q在Angular组件之外
- AngularJS 2:如何拥有一个'属性'指令与其主机组件通信
- 路由器+将变量从子组件改为父组件[Angularjs 2]
- 扩展控制器组件angularjs