我的问题:
当我尝试在材质对话框中的颜色输入元素上使用ngModel时,我在chrome中收到以下警告消息:
The specified value "" does not conform to the required format. The format is "#rrggbb" where rr, gg, bb are two-digit hexadecimal numbers.
我错了什么?还是这是Angular6的错误?
我的代码:
color.html
<input type="color" [(ngModel)]="color" />
app.component.html
<button (click)="openDialog()">Open Color Dialog</button>
app.component.ts
import { Component } from '@angular/core';
import { MatDialog, MatDialogRef } from '@angular/material';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(public dialog: MatDialog) { }
openDialog(): void {
const dialogRef = this.dialog.open(ColorDialogComponent);
}
}
@Component({
selector: 'app-color',
templateUrl: 'color.html',
})
export class ColorDialogComponent {
constructor(public dialogRef: MatDialogRef<AppComponent>) { }
onNoClick(): void {
this.dialogRef.close();
}
}
答案 0 :(得分:0)
那不是错误,实际上是警告。应该可以,对我有用。
答案 1 :(得分:0)
我在这个问题上花了一些时间,我认为这是一个错误。
无论您如何初始化 ngModel 值,它的行为始终如此。
尝试使用 FormControl
@Component({
selector: 'app-color-input',
templateUrl: './color-input.component.html',
styleUrls: ['./color-input.component.scss']
})
export class ColorInputComponent implements OnInit {
@ViewChild('colorInputEl') colorInputEl: ElementRef;
colorInput: FormControl = new FormControl('#000000');
constructor() { }
ngOnInit(): void {
this.colorInput.valueChanges.subscribe((value) => {
this.colorChanged(value);
});
}
...
}
<input #colorInputEl [formControl]="colorInput" matInput type="color"
placeholder="Choose Color" />
我添加了元素引用,以防您需要它来触发点击或其他操作。