在 Angular 中使用 ngDefaultControl 时无法初始化默认值
Unable to initialize default values when using ngDefaultControl in Angular
我使用了子组件,子组件包含ngDefaultControl 属性.
el-input.component.ts:
@Component({
selector: 'el-input',
template: ` <input type="text" /> `,
})
export class ElInput {}
我是这样用的:
@Component({
selector: 'app-home',
template: `
<el-input ngDefaultControl [(ngModel)]="name"></el-input>
<p>{{ name }}</p>
<button (click)="onClick()">Change Name</button>
`,
})
export class HomeComponent {
name: string = 'Tom';
onClick() {
this.name = 'Jack';
}
}
我把name的初始值设置为Tom,但是el-input没有显示。然后我点击按钮,什么也没有发生
点击按钮后:
我该如何解决
这是因为 [(ngModel)] 是原生 html 元素的 angular 指令
如果您想创建自定义输入,您需要在 elElement 组件内的 el 元素内创建一个 @Input 变量,并将其绑定到您的应用程序内
@Component({
selector: 'el-input',
template: ` <input type="text" [(ngModel)]='name' /> `,
})
export class ElInput {
@Input()
name: string
}
@Component({
selector: 'app-home',
template: `
<el-input ngDefaultControl [name]="name"></el-input>
<p>{{ name }}</p>
<button (click)="onClick()">Change Name</button>
`,
})
export class HomeComponent {
name: string = 'Tom';
onClick() {
this.name = 'Jack';
}
}
并且如果您想在更新 el 输入时更改 app-home 中的变量名称的值,您需要创建一个 @Output 变量,它将为您的 [=22] 发出新值=] 组件
我做了一个 stackblitz 来解决你的问题
我使用了子组件,子组件包含ngDefaultControl 属性.
el-input.component.ts:
@Component({
selector: 'el-input',
template: ` <input type="text" /> `,
})
export class ElInput {}
我是这样用的:
@Component({
selector: 'app-home',
template: `
<el-input ngDefaultControl [(ngModel)]="name"></el-input>
<p>{{ name }}</p>
<button (click)="onClick()">Change Name</button>
`,
})
export class HomeComponent {
name: string = 'Tom';
onClick() {
this.name = 'Jack';
}
}
我把name的初始值设置为Tom,但是el-input没有显示。然后我点击按钮,什么也没有发生
点击按钮后:
我该如何解决
这是因为 [(ngModel)] 是原生 html 元素的 angular 指令
如果您想创建自定义输入,您需要在 elElement 组件内的 el 元素内创建一个 @Input 变量,并将其绑定到您的应用程序内
@Component({
selector: 'el-input',
template: ` <input type="text" [(ngModel)]='name' /> `,
})
export class ElInput {
@Input()
name: string
}
@Component({
selector: 'app-home',
template: `
<el-input ngDefaultControl [name]="name"></el-input>
<p>{{ name }}</p>
<button (click)="onClick()">Change Name</button>
`,
})
export class HomeComponent {
name: string = 'Tom';
onClick() {
this.name = 'Jack';
}
}
并且如果您想在更新 el 输入时更改 app-home 中的变量名称的值,您需要创建一个 @Output 变量,它将为您的 [=22] 发出新值=] 组件
我做了一个 stackblitz 来解决你的问题