Issue
I'm trying to do a data binding in Angular, but I received this error message: [ERROR] NG9: Property 'value' does not exist on type 'EventTarget'. [plugin angular-compiler] src/app/data-binding/data-binding.component.html:3:42: 3 │ <input type="text" (input)="$event.target.value"/>
This is my data-binding.component.html `
Primeiro Componente
<input type="text" [(ngModel)]="$event.target.value"/>
<h1>{{ numero }}</h1>`
this is my data-binding.component.ts `import { Component, OnInit } from '@angular/core';
@Component({
    selector: 'app-data-binding',
    templateUrl: './data-binding.component.html',
    styleUrls: ['./data-binding.component.css']
})
export class DataBindingComponent implements OnInit {
    public numero?: number;
    constructor() {}
    ngOnInit() {}
}`
I tried this:
data-binding.component.html `
Primeiro Componente
<input type="text" (input)="eventHandler(($event.target as HTMLInputElement).value)">
<h1>{{ numero }}</h1>`
data-binding.component.ts `import { Component, OnInit } from '@angular/core';
@Component({
    selector: 'app-data-binding',
    templateUrl: './data-binding.component.html',
    styleUrls: ['./data-binding.component.css']
})
export class DataBindingComponent implements OnInit {
    // Declarando a variável numero e atribuindo um valor inicial
    public numero?: number;
    constructor() {}
    ngOnInit() {}
    eventHandler(value: string): void {
        console.log('Input value:', value);
        // ... handle the value further
        this.numero = Number(value);
  }
}`
[ERROR] NG5002: Parser Error: Unexpected token ')' at column 55 in [eventHandler(($event.target as HTMLInputElement).value)] in D:/ProgramFiles/cursoAngular/src/app/data-binding/data-binding.component.html@2:28 [plugin angular-compiler]
src/app/data-binding/data-binding.component.html:5:4:
  5 │ <h1>{{ numero }}</h1>
    ╵     ~~~~~~~~~~~~
Error occurs in the template of component DataBindingComponent.
src/app/data-binding/data-binding.component.ts:5:15:
  5 │   templateUrl: './data-binding.component.html',
    ╵                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
And This:
data-binding.component.html `
Primeiro Componente
<input type="text" (input)="obterNumero(value)"/>
<h1>{{ numero }}</h1>`
data-binding.component.ts `import { Component, OnInit } from '@angular/core';
@Component({
    selector: 'app-data-binding',
    templateUrl: './data-binding.component.html',
    styleUrls: ['./data-binding.component.css']
})
export class DataBindingComponent implements OnInit {
    // Declarando a variável numero e atribuindo um valor inicial
    public numero?: number;
    constructor() {}
    ngOnInit() {}
    obterNumero(numero: number) {
        this.numero = numero;
  }
}`
Application bundle generation complete. [0.208 seconds] Page reload sent to client(s). X [ERROR] NG4: Expected 1 arguments, but got 0. [plugin angular-compiler]
src/app/data-binding/data-binding.component.html:3:28:
  3 │ <input type="text" (input)="obterNumero()"/>
    ╵                             ~~~~~~~~~~~
Error occurs in the template of component DataBindingComponent.
src/app/data-binding/data-binding.component.ts:5:15:
  5 │   templateUrl: './data-binding.component.html',
    ╵                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Application bundle generation failed. [0.232 seconds] X [ERROR] NG9: Property 'value' does not exist on type 'DataBindingComponent'. [plugin angular-compiler]
src/app/data-binding/data-binding.component.html:3:40:
  3 │ <input type="text" (input)="obterNumero(value)"/>
    ╵                                         ~~~~~
Error occurs in the template of component DataBindingComponent.
src/app/data-binding/data-binding.component.ts:5:15:
  5 │   templateUrl: './data-binding.component.html',
    ╵                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Application bundle generation failed. [0.207 seconds] X [ERROR] NG9: Property 'value' does not exist on type 'DataBindingComponent'. [plugin angular-compiler]
src/app/data-binding/data-binding.component.html:3:40:
  3 │ <input type="text" (input)="obterNumero(value)"/>
    ╵                                         ~~~~~
Error occurs in the template of component DataBindingComponent.
src/app/data-binding/data-binding.component.ts:5:15:
  5 │   templateUrl: './data-binding.component.html',
    ╵                ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Solution
You could handle the value within your component file like the following:
template
<input type="text" (input)="setMyNumber($event)"/>
<h1>{{ myNumber }}</h1>`
component.ts
@Component({...})
export class MyComponent {
  myNumber!: number | undefined;
  setMyNumber(event: Event): void {
    const value = Number((event.target as HTMLInputElement).value);
    this.myNumber = value;
  }
}
Or like this:
template
<input type="text" [(ngModel)]="myNumber"/>
<h1>{{ myNumber }}</h1>
component.ts
@Component({...})
export class MyComponent {
   myNumber!: number | undefined;
}
Or using reactive forms: template
<input type="text" [formControl]="inputControl"/>
<pre>{{ inputControl.value | json }}</pre>
component.ts
@Component({...})
export class MyComponent {
   inputControl = new FormControl<string | null>(null);
}
In this section of your code, you are getting this error because you are not providing value to the function obterNumero, you probably meant $event rather than value which is a keyword
src/app/data-binding/data-binding.component.html:3:40:
  3 │ <input type="text" (input)="obterNumero(value)"/>
Here, you also get an error because you are supposed to bind  ngModel to a variable from your component
<input type="text" [(ngModel)]="$event.target.value"/>
<h1>{{ numero }}</h1>`
In this scenario, although the logic written is correct, Angular doesn't like handling that logic in the template HTML, it is better to do it on the component I showed previously. Avoid writing too much logic on the template.
<input type="text" 
   (input)="eventHandler(($event.target as HTMLInputElement).value)">
<h1>{{ numero }}</h1>`
Answered By - Andres2142
 
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.