如何在材质对话框的<input type =“ color” />上使用[(ngModel)]?

时间:2018-08-08 18:08:43

标签: angular angular-material angular6

我的问题
当我尝试在材质对话框中的颜色输入元素上使用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();
  }

}

2 个答案:

答案 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" />

我添加了元素引用,以防您需要它来触发点击或其他操作。