Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Routes 如何在Angular 2中观察路线变化以及每次路线变化时布尔变量值的变化?_Routes_Angular_Components_Watch - Fatal编程技术网

Routes 如何在Angular 2中观察路线变化以及每次路线变化时布尔变量值的变化?

Routes 如何在Angular 2中观察路线变化以及每次路线变化时布尔变量值的变化?,routes,angular,components,watch,Routes,Angular,Components,Watch,我有一个header组件,其中我将几个布尔变量设置为true,以使按钮在html中可见。基本上,在angular 1.x中,我们在location.path上使用了watch。但在angular 2中,我知道我们没有手表。当我进一步探索如何实现这一点时,我遇到了诸如更改检测、ngOnChange、Observable、router.subscribe等主题。。我是Angular 2的新手,使用Angular 2.0.0-beta.15。我不明白应该阅读哪个主题来找到解决方案。有人能帮我找出与我的

我有一个header组件,其中我将几个布尔变量设置为true,以使按钮在html中可见。基本上,在angular 1.x中,我们在location.path上使用了watch。但在angular 2中,我知道我们没有手表。当我进一步探索如何实现这一点时,我遇到了诸如更改检测、ngOnChange、Observable、router.subscribe等主题。。我是Angular 2的新手,使用Angular 2.0.0-beta.15。我不明白应该阅读哪个主题来找到解决方案。有人能帮我找出与我的情况相关的话题吗?

从'angular2/Router'导入{Router};
@组成部分({
.....
})
导出类CMP{
someVar:boolean=false;
构造函数(专用路由器:路由器){
此.router.subscribe(()=>{
//此代码将在每次路线更改时运行
//你想干什么就干什么,在这儿
this.someVar=!this.someVar;
});
}    
}
从“angular2/Router”导入{Router};
@组成部分({
.....
})
导出类CMP{
someVar:boolean=false;
构造函数(专用路由器:路由器){
此.router.subscribe(()=>{
//此代码将在每次路线更改时运行
//你想干什么就干什么,在这儿
this.someVar=!this.someVar;
});
}    
}

如果您使用的是3.0.0-beta.2版的@angular/router,他们已更改订阅方法

import {Router} from "@angular/router";

@Component({
.....
})
export class YourCmp {


    constructor(private router: Router) {
        this.router.events.subscribe(route => {
            console.log(route.url);
        });
    }
}

如果您使用的是版本3.0.0-beta.2中的@angular/router,他们已将方法更改为订阅

import {Router} from "@angular/router";

@Component({
.....
})
export class YourCmp {


    constructor(private router: Router) {
        this.router.events.subscribe(route => {
            console.log(route.url);
        });
    }
}

@A_Singh-你是对的。谢谢。在发布这个问题之前,我在subscribe函数中使用location.path()尝试了上面的相同代码。例如,this.router.subscribe(location.path())=>.rest一切与上面相同。但它导致了语法错误,我无法理解语法问题是什么。只是解释为可能有人像我一样尝试过,并且遇到了麻烦。@A_Singh-你是对的。非常感谢。在发布此问题之前,我用location.path()尝试了上面相同的代码内部subscribe函数.ie,this.router.subscribe(location.path())=>.rest一切与上面相同。但它导致语法错误,我无法理解语法问题是什么。只是解释为有人可能像我一样尝试过,并且遇到了麻烦。如果您的组件在外部,这会起作用吗?因此,如果我有一个静态导航,其中有一个按钮,我想隐藏/显示该值是否为真,this events.subscribe广播到该组件吗?如果您的组件位于的外部,则此操作是否有效?因此,如果我有一个静态导航,其中有一个按钮,如果某个值为true,则我希望隐藏/显示该按钮,this events.subscribe广播到该组件吗?