我有一个实现,其中父组件希望通过使用子组件上可用的< code>@Input参数将某些数据传递给子组件。然而,这种数据传输是可选的,父节点可能会也可能不会按照要求传递它。一个组件中可以有可选的输入参数吗?我在下面描述了一个场景:
<parent>
<child [showName]="true"></child> //passing parameter
<child></child> //not willing to passing any parameter
</parent>
//child component definition
@Component {
selector:'app-child',
template:`<h1>Hi Children!</h1>
<span *ngIf="showName">Alex!</span>`
}
export class child {
@Input showName: boolean;
constructor() { }
}
这里有两个选项。
1)您可以在孩子身上使用*ngIF
,以防孩子在其Input为空时不需要显示。
<parent>
<child *ngIf="true" [showName]="true"></child> //passing parameter
<child></child> //not willing to passing any parameter
</parent>
2)如果在没有任何输入的情况下显示子变量,您可以使用修改后的setter来检查输入变量的存在情况
在孩子中:
private _optionalObject: any;
@Input()
set optionalObject(optionalObject: any) {
if(optionalObject) this._optionalObject = optionalObject;
}
get optionalObject() { return this._optionalObject; }
默认情况下,输入值是可选的。您的代码仅在尝试访问未实际传递的输入的属性时才会失败(因为这些输入是未定义的
)。
您可以实现OnChanges或使输入成为setter而不是属性,以便在实际传递值时执行代码。
export class child {
@Input set showName(value: boolean) {
this._showName = value;
doSomethingWhenShowNameIsPassed(value);
}
constructor() { }
}
您可以使用(?)操作员如下
import {Component,Input} from '@angular/core';
@Component({
selector:'child',
template:`<h1>Hi Children!</h1>
<span *ngIf="showName">Alex!</span>`
})
export class ChildComponent {
@Input() showName?: boolean;
constructor() { }
}
使用子组件的父组件将是
@Component({
selector: 'my-app',
template: `
<div>
<h2>Hello {{name}}</h2>
<child [showName]="true"></child>
<child ></child>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = 'Angular2'
}
}
现场演示
是否可以在 Angular 2 路由中具有可选的路由参数?我在RouteConfig中尝试了Angular 1.x语法,但收到以下错误: “原始异常:路径“/ user /: id ?“包含”?
我有一个ionic 2应用程序,我一直在使用本地数据进行测试。现在,我正试图向我的api发出一些Ajax请求以获取数据。 在我的文件,我正在这样定义我的组件: 然后,我的文件的定义如下: 然后,最后,我用我的文件初始化我的注册视图: 我预期的结果是,在初始化我的注册视图时,将注入。因此,它的构造函数将运行,这将触发构造函数中的函数。然后,我应该在浏览器网络选项卡中看到一个网络调用。 但是,我得到了
我想创建一个具有不需要值的属性的组件。例如,而不是像这样的东西:(我现在有) 或 我宁愿有: 因此组件本身必须查看属性editMode是否存在。当我有很多这样的属性时,这个看起来会干净很多。我没有看到任何关于如何做到这一点的文档。可行吗?
基于Angular 2的文档,您可以使用@Input轻松地将数据从一个组件传递到另一个组件。 例如,我可以这样设置父对象: 然后按如下方式获取子组件中的数据: 很明显,将传递给父组件的模板(当然是在子选择器中),并将它们处理到子组件中。 但问题是。 我的子组件DOM元素(在本例中
问题内容: 我有一个简单的形式,像这样: 与我的控制器如下: 我想做的是在提交后清除文本输入,因此我只需清除模型值: 除了现在,因为“需要”表单输入,所以在表单输入周围出现了红色边框。这是正确的行为,但不是我在这种情况下想要的……所以,我想清除输入,然后模糊输入元素。这导致我: 现在,我知道从这样的控制器修改DOM在Angular文档中是很陌生的-但是还有更多的Angular方式可以做到这一点吗?
我正在学习Selenium WebDriver,并在一个公共网站上测试我的技能。问题是,我无法使用Selenium WebDriver Java与具有role='combobox'的输入元素交互。我需要为计算器的第一个元素交互(选择2d选项)(“Кааааааааааааааааааачааааааа”文本旁边的组合框)。Firefox显示了它的代码: 当我尝试为它单击或发送键时,它会写入元素(s