Olá! Então, eu contornei o problema só para conseguir prosseguir com as aulas, mas queria fazer funcionar o two way data biding.
A minha gabiarra foi essa:
<input type="textarea" class="input" id="pensamento" placeholder="Digite o seu pensamento"
[value]="pensamento.conteudo" (input)="pensamento.conteudo=getValue($event)">
import { Component, OnInit } from '@angular/core';
import { Pensamento } from 'src/app/pensamentos/pensamento';
import { PensamentoService } from '../pensamento.service';
import { Router } from '@angular/router';
@Component({
selector: 'app-cria-pensamento',
templateUrl: './cria-pensamento.component.html',
styleUrls: ['./cria-pensamento.component.css']
})
export class CriaPensamentoComponent implements OnInit {
pensamento: Pensamento = { conteudo: '', autoria: '', modelo: 'modelo1' };
constructor(private service: PensamentoService, private router: Router) { }
ngOnInit(): void {
}
criarPensamento() {
this.service.criar(this.pensamento).subscribe(() => {
this.router.navigate(['/listarPensamento']);
})
}
getValue(event: Event): string {
return (event.target as HTMLInputElement).value;
}
}
No arquivo app.module.ts eu fiz a importação do "FormsModule":
import { FormsModule } from '@angular/forms';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { CabecalhoComponent } from './componentes/cabecalho/cabecalho.component';
import { RodapeComponent } from './componentes/rodape/rodape.component';
import { CriaPensamentoComponent } from './componentes/pensamentos/cria-pensamento/cria-pensamento.component';
import { ListarPensamentoComponent } from './componentes/pensamentos/listar-pensamento/listar-pensamento.component';
import { PensamentoComponent } from './componentes/pensamentos/pensamento/pensamento.component';
import { HttpClientModule } from '@angular/common/http';
import { ExcluirPensamentoComponent } from './componentes/excluir-pensamento/excluir-pensamento.component';
import { EditarPensamentoComponent } from './componentes/pensamentos/editar-pensamento/editar-pensamento.component';
@NgModule({
declarations: [
AppComponent,
CabecalhoComponent,
RodapeComponent,
CriaPensamentoComponent,
ListarPensamentoComponent,
PensamentoComponent,
ExcluirPensamentoComponent,
EditarPensamentoComponent
],
imports: [
BrowserModule,
AppRoutingModule,
HttpClientModule,
FormsModule
],
providers: [],
bootstrap: [AppComponent]
})
export class AppModule { }
A Mensagem de erro que aparece no console do navegador é essa:
ERROR Error: NG01352: If ngModel is used within a form tag, either the name attribute must be set or the form
control must be defined as 'standalone' in ngModelOptions.
Example 1: <input [(ngModel)]="person.firstName" name="first">
Example 2: <input [(ngModel)]="person.firstName" [ngModelOptions]="{standalone: true}">
Angular 11
CriaPensamentoComponent_Template cria-pensamento.component.html:12
Angular 20
RxJS 6
Angular 12
core.mjs:9171:22
Acabei de subir o código para o GitHub, para conseguir me ajudar
https://github.com/MannyShussan/Memoteca-Alura