Reputation: 145
I‘m writing a todolist demo.
When ng serve
it, it shows an error:
Error: src/app/app.component.html:17:58 - error TS2322: Type 'Event' is not assignable to type 'boolean'.
17 <input class="toggle" type="checkbox" [(ngModule)]="todo.isDone" >
~~~~~~~~~~~~~~
18
19 <label>{{ todo.title }}</label>
~~
Also all items not be checked.(even their isDone status is true)
I def an object in app.component.ts.
public todos:{
id:number,
title: string,
isDone: boolean
}[]=todos
const todos=[
{
id:1,
title:'study',
isDone:true
},{
id:2,
title:'sleep',
isDone:true
},{
id:3,
title:'drink',
isDone:true
}
]
app.component.html as below.
<li *ngFor="let todo of todos">
<div class="view">
<input class="toggle" type="checkbox" [(ngModule)]="todo.isDone" >
<label>{{ todo.title }}</label>
<button class="destroy"></button>
</div>
<input class="edit" value="Create a TodoMVC template">
</li>
Can anyone see what I'm doing wrong? thanks!
Upvotes: 12
Views: 29378
Reputation: 71
This error can also happen in the following situation:
The fix is to export the component from its declaring module.
Upvotes: 0
Reputation: 69
In my case it was because I had made my own component and it didn't have the output event emitter (visibleChange) defined.
Code sample with emitter highlighted:
export class DialogComponent {
@Input() header = '';
@Input() message = '';
@Input()
get visible(): boolean { return this._visible; }
set visible(value: boolean) {
this._visible = value;
}
private _visible = false;
@Output() visibleChange = new EventEmitter<boolean>();
@Output() closeDialog = new EventEmitter<void>();
onCloseDialog(): void {
this.closeDialog.emit();
}
}
Upvotes: 0
Reputation: 1600
When I got this error, it was because I forgot to import the FormsModule
in app.module.ts
. So in app.module.ts:
import { FormsModule } from '@angular/forms';
...
imports: [
..,
FormsModule
],
Upvotes: 34
Reputation: 3387
change you code from <input class="toggle" type="checkbox" [(ngModule)]="todo.isDone" >
to this...
<input class="toggle" type="checkbox" [(ngModel)]="todo.isDone" >
Here, ngModule is not recognizing..
Upvotes: 3