Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.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
Attributes 更改Angular 2中子组件的指令属性_Attributes_Angular - Fatal编程技术网

Attributes 更改Angular 2中子组件的指令属性

Attributes 更改Angular 2中子组件的指令属性,attributes,angular,Attributes,Angular,我有一个具有以下指令的父组件。最初,与此指令关联的子组件是隐藏的,在发生一些事件后,我希望使其可见,因此我使用父组件中的按钮Show child来更改此属性 导出类应用程序{ 构造函数(){ 可见=假; } showMe(){ 可见=真实; } } 问题是,一旦显示了子组件,我需要在子组件中提供一个按钮Hide,以再次隐藏它: 导出类子组件{ 构造函数(private _元素:ElementRef,private _呈现器:呈现器){} 希德姆(){ 设el=该元素(元素nativeEleme

我有一个具有以下指令的父组件
。最初,与此指令关联的子组件是隐藏的,在发生一些事件后,我希望使其可见,因此我使用父组件中的按钮
Show child
来更改此属性

导出类应用程序{
构造函数(){
可见=假;
}
showMe(){
可见=真实;
}
}
问题是,一旦显示了子组件,我需要在子组件中提供一个按钮
Hide
,以再次隐藏它:

导出类子组件{
构造函数(private _元素:ElementRef,private _呈现器:呈现器){}
希德姆(){
设el=该元素(元素nativeElement);
这个.u renderer.setElementStyle(el,‘可见性’、‘隐藏’);
}
}
我不确定这部分,但至少它是有效的。现在,如果我想再次更改
子组件
指令的属性
hidden
,该怎么办?调用showMe()不起作用,可能是因为应用的样式中存在某种优先级

正确的方法是什么

:首先单击“显示子对象”,然后单击“隐藏”,然后再次尝试单击“显示子对象”。上次单击的按钮不起作用


谢谢

我不确定这是您想要的方法,但我认为它的行为如下所述:

@组件({
选择器:'子组件',
提供者:[],
主机:{'[隐藏]:'隐藏'},
模板:`
这就是那个孩子
隐藏
`,
})
导出类子组件{
@Input()隐藏:boolean=false;
}

秀给孩子看


示例中的问题是
hidden
属性和
visibility:hidden
得到的值相互冲突。

谢谢。在阅读了文档之后,我想我理解了你在做什么。唯一的问题是,我无法在不破坏其他内容的情况下启动隐藏的子组件。你有解决办法吗?我更新了我的答案。只需添加
[hidden]=“true”
即可使其最初隐藏。当然:-)谢谢。顺便问一下,这是实现子组件和父组件之间通信的最直接的方法吗?您可以引用父组件中的字段(如示例中的可见字段),而不是引用模板变量
#child
)。这是更常见的方法,但在本例中,仅在模板中使用直接引用似乎更直接。是
输入:[“隐藏”]
<代码>输入:布尔=假与
@Input()输入相同:boolean=false只是一种不同的表达方式。您需要输入能够传递像
`这样的值。我们可以为输入使用不同的名称,但我不认为有理由发明一个新名称。