2
votes

erreur TS2742: Le type inféré de 'nom d'utilisateur' ne peut pas être nommé sans référence à '... / node_modules / @ angular / forms / forms'

Forgot-password.component.ts (44,7): erreur TS2742: Le type déduit de 'nom d'utilisateur' ne peut pas être nommé sans référence à '... / node_modules / @ angular / forms / forms'. Ce n'est probablement pas portable. Une annotation de type est nécessaire.

import { Component, Output, EventEmitter } from '@angular/core';
import { Router } from '@angular/router';
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
import { User } from '../../models';
import { ValidateUsername } from '../../validators/userid-validator';

@Component({
  selector: 'app-forgot-password',
  templateUrl: './forgot-password.component.html',
  styleUrls: ['./forgot-password.component.scss']
})
export class ForgotPasswordComponent {
  forgotPasswordForm: FormGroup;
  @Output() resetPassword: EventEmitter<any> = new EventEmitter<any>();
  @Output() onSubmit: EventEmitter<User> = new EventEmitter<User>();
  constructor(private formBuilder: FormBuilder, private router: Router) {
    this.forgotPasswordForm = this.formBuilder.group({
      username: ['', [Validators.required, ValidateUsername]]
    });
  }
  get username() { return this.forgotPasswordForm.get('username'); }
  passwordToken(event$) {
    this.onSubmit.emit(event$.value);
  }
}

Lors de l'exécution de l'applicationn, j'obtiens une erreur à cette ligne 'get username () {return this.forgotPasswordForm.get (' username '); } '


1 commentaires

Il existe un problème TypeScript qui peut provoquer cette erreur après l'utilisation du lien npm < / code>


3 Réponses :


-5
votes

Devrait essayer d'avoir un type de rappel, comme ceci

 get username(): AbstractControl { 
   return this.forgotPasswordForm.get('username'); 
 }


1 commentaires

Je ne pense pas que le type de retour any devrait être encouragé. devrait utiliser string



1
votes

Quand il dit

Ce n'est probablement pas portable. Une annotation de type est nécessaire.

Parfois, vous devez vérifier votre tsconfig.json et voir s'il y a quelque chose qui ne va pas avec "baseUrl", "chemins" et les packages liés.

Mais dans ce cas, TS accuse de ne pas l'avoir tapé car il est dans votre configuration ts, donc soit vous pouvez le taper comme "any", créer une interface pour lui ou taper comme forcément, dans ce cas, sous forme de chaîne.


0 commentaires

1
votes

Vous devez être explicite sur le type de retour de la propriété.

get username(): AbstractControl { return this.forgotPasswordForm.get('username'); }

ForgotPasswordForm est un FormGroup et son get ( ) renvoie une méthode AbstractControl avec le sous-classes

Sous-classes

  • FormArray
  • FormControl
  • FormGroup


0 commentaires