Angular 什么';这个装订有什么问题?(角度2+;)

Angular 什么';这个装订有什么问题?(角度2+;),angular,ionic-framework,Angular,Ionic Framework,更新3: 实际上,我找到了导致我的代码最初出现问题的原因。如果我使用Ionic/Angular listener绑定到代码中的一个按钮,那么将变量从false更改为true会改变UI状态 但是,如果使用自定义侦听器(“touchstart”),则即使变量发生更改,也不会导致UI刷新。我认为这是由于角度渲染等工作方式。但我希望能在某个地方记录下来 编辑代码片段+解释,在代码片段中,我们有父组件和子组件,其中子组件发出的事件需要更改父组件的可见性 编辑以更好地澄清问题: 在我的代码中,我有一个非常简

更新3:

实际上,我找到了导致我的代码最初出现问题的原因。如果我使用Ionic/Angular listener绑定到代码中的一个按钮,那么将变量从false更改为true会改变UI状态

但是,如果使用自定义侦听器(“touchstart”),则即使变量发生更改,也不会导致UI刷新。我认为这是由于角度渲染等工作方式。但我希望能在某个地方记录下来

编辑代码片段+解释,在代码片段中,我们有父组件和子组件,其中子组件发出的事件需要更改父组件的可见性

编辑以更好地澄清问题:

在我的代码中,我有一个非常简单的组件(如下),我想让这些UI Ranger在showSliders变量的布尔状态之后动态地出现/消失

我验证了我正在更新变量中的值,但我猜视图只在渲染或类似的情况下读取它

因此,我再次看到,当[hidden]=“showSliders”(此处showSliders为true)时,UI没有显示,反之亦然

但问题是-如果页面已经呈现为一种状态,那么变量的动态更改不会导致UI出现/取消显示

我想有一个简单的方法来实现这一点吗

在javascript中,一旦得到布尔值,我可能只会得到该DIV的ID.style.display=“none”。如何在angular 2+中执行相同操作?

从'@angular/core'导入{Component};
从'ionic angular'导入{NavController};
从“../../components/child/child”导入{ChildComponent}
@组成部分({
选择器:“主页”,
templateUrl:'home.html'
})
导出类主页{
公共隐藏:布尔值=false;
构造函数(公共navCtrl:NavController){
}
切换按钮(){
this.hidden=!this.hidden;
console.log(this.hidden);
}
getEvent($event){
console.log($event);
this.hidden=$event;
}
}
//儿童:
从“@angular/core”导入{Component,Output,EventEmitter};
@组成部分({
选择器:'子',
模板:“隐藏切换(子项)”
})
导出类子组件{
@Output()onSomeEvent=新的EventEmitter();
布尔值:布尔值=假;
构造函数(){
log('Hello ChildComponent');
}
切换按钮(){
this.onSomeEvent.emit(this.boolean);
console.log(“按下的子按钮”)
}
}
//父视图:
只是操场
隐藏切换(父级)

您只需使用
*ngIf=”“
结构指令即可。
您只需使用
*ngIf=”“
结构指令即可。
通过我的研究,我发现如果一个UI组件(如“离子工具栏”)通过绑定到变量的*ngIf或[hidden]属性设置了条件可见性,那么通过离子/角度监听器(单击、点击等)更改此变量将动态更新UI,而如果使用DOM级监听器(.addEventListener)即使绑定到UI状态的变量已更改,UI也不会更新

示例(不是真正的代码示例,而是概念上的示例):

isItHidden:boolean=false;
@Viewchild(“工具栏”):工具栏;
toolbarElem=this.toolbar.nativeElement;
toolbarElem.addEventListener(“touchstart”,function(){});

通过我的研究,我发现如果一个UI组件(如“离子工具栏”)通过绑定到变量的*ngIf或[hidden]属性设置了条件可见性,那么通过离子/角度监听器(单击、点击等)更改此变量将动态更新UI,而如果使用DOM级监听器(.addEventListener)即使绑定到UI状态的变量已更改,UI也不会更新

示例(不是真正的代码示例,而是概念上的示例):

isItHidden:boolean=false;
@Viewchild(“工具栏”):工具栏;
toolbarElem=this.toolbar.nativeElement;
toolbarElem.addEventListener(“touchstart”,function(){});


答案是否有助于您解决问题,或者您需要更多帮助?绑定没有问题,您确实需要了解更多。嘿,我在这里重新澄清了我的问题哦,该死的,我只是很愚蠢……我以为我在交替值,但我没有这样做……该死:(现在可以了答案是否帮助你解决问题,或者你需要更多的帮助?绑定没有问题,确实你需要了解更多。嘿,我在这里重新澄清了我的问题哦,该死的,我只是愚蠢…我以为我在改变值,但我没有这样做…该死:(现在可以使用了。谢谢你的回复,我会立即尝试,但我担心问题不在于项目没有获得正确的渲染状态。问题是,稍后在应用程序中变量“showSliders”通过onSelected事件动态更改=>UI仍然保持其以前的状态,忽略变量的新值。我将添加一个代码段,我仔细检查了该代码段,并且确定我得到的变量“showSliders”正在更改其布尔值-但我仍然没有得到它-我如何向DIV发送“传播”或命令来告诉它“嘿,关于你正在看的东西的价值发生了变化-请改变你的状态”…@SergeyRudenko希望你能解决这个问题。是的,我确实找到了原因-参见我的更新3。这与我使用“addEventListener”的事实有关“是的,而不是内置的爱奥尼亚听众。现在我可以绕开它了。但是谢谢你的评论和帮助,鼓励我:)很好,你能解决它@SergeyRudenko。所以如果你能把它作为一个答案并接受它,那就太好了。可能会对正在研究同一问题的人有所帮助。嘿,谢谢你的回复,我会尝试的。”
isItHidden:boolean = false;

<ion-toolbar #toolbar [hidden]=isItHidden (click)="changeVisibility()"><ion-toolbar>

@Viewchild('toolbar'): toolbar;

toolbarElem = this.toolbar.nativeElement;
toolbarElem.addEventListener("touchstart", function(){});