103 votes

Erreur EventEmitter angulaire: Arguments de type 0 attendus, mais 1 obtenu

J'obtiens l'erreur de type "Attendu 0 type d'arguments, mais j'ai reçu 1", en dépit de ce tutoriel pour un T. https://youtu.be/I317BhehZKM?t=57s

J'ai précisé:

  newUserInfoComplete:boolean = false

pourtant, j'obtiens l'erreur ci-dessus précisés sur <boolean> dans cette ligne:

  @Output() newUserInfoCompleteEvent = new EventEmitter <boolean> ();

Aussi, si j'ai tout simplement omettre <boolean> , j'obtiens cette erreur:

Argument of type 'boolean' is not assignable to parameter of type 'string'.

et cette.NewUserInfoComplete est indiqué ici:

this.newUserInfoCompleteEvent.emit(this.newUserInfoComplete);

Voici mon composant:

import { Component, OnInit, Output } from '@angular/core';
import { slideToRight } from '../../../../router.animations';
import { Router, ActivatedRoute, UrlSegment } from '@angular/router';
import { EventEmitter } from 'protractor';

@Component({
  selector: 'app-new-user-input',
  templateUrl: './new-user-input.component.html',
  styleUrls: ['./new-user-input.component.css'],
  animations: [slideToRight()]
})
export class NewUserInputComponent implements OnInit {

  newUserInfoComplete:boolean = false

  @Output() newUserInfoCompleteEvent = new EventEmitter <boolean> ();

  constructor(private router: Router, r: ActivatedRoute) {
    r.url.subscribe((s: UrlSegment[]) => {
      console.log("url", s); //https://vsavkin.com/angular-router-understanding-router-state-7b5b95a12eab
    });
  }

  ngOnInit() {
  }



  sendNewUserInfoComplete(){
    this.newUserInfoCompleteEvent.emit(this.newUserInfoComplete);
  }


  displaySibling() {
    console.log(this.router);
    this.router.navigate(['../', { outlets: { newuserorginfo: ['newuserorginfo'] } }])
  }

  closeBlade() {
    this.router.navigate([{ outlets: { newuserinput: null } }]);
  }

}

304voto

ConnorsFan Points 468

Essayez d'importer EventEmitter depuis Angular au lieu de protractor :

 import { Component, OnInit, Output, EventEmitter } from '@angular/core';
 

10voto

imnickvaughn Points 627

J'ai oublié de vérifier mes importations! Zut. J'utilisais l'émetteur d'événement de PROTRACTOR et non l'émetteur d'événement de base angulaire

 import { EventEmitter } from '@angular/core';
import { Component, OnInit, Output } from '@angular/core';
import { slideToRight } from '../../../../router.animations';
import { Router, ActivatedRoute, UrlSegment } from '@angular/router';

@Component({
  selector: 'app-new-user-input',
  templateUrl: './new-user-input.component.html',
  styleUrls: ['./new-user-input.component.css'],
  animations: [slideToRight()]
})
export class NewUserInputComponent implements OnInit {

  newUserInfoComplete = false;

  @Output() newUserInfoCompleteEvent = new EventEmitter<boolean>();

  constructor(private router: Router, r: ActivatedRoute) {
    r.url.subscribe((s: UrlSegment[]) => {
      console.log("url", s); //https://vsavkin.com/angular-router-understanding-router-state-7b5b95a12eab
    });
  }

  ngOnInit() {
  }



  sendNewUserInfoComplete() {
    this.newUserInfoCompleteEvent.emit(this.newUserInfoComplete);
  }


  displaySibling() {
    console.log(this.router);
    this.router.navigate(['../', { outlets: { newuserorginfo: ['newuserorginfo'] } }])
  }

  closeBlade() {
    this.router.navigate([{ outlets: { newuserinput: null } }]);
  }

}
 

5voto

Kelvin Onkundi Points 19

Vous venez de vous tromper d'importations, importez de @ angular / core et tout va bien

3voto

 import { EventEmitter, Component, OnInit, Output } from '@angular/core';
 

Veuillez vous assurer que EventEmitter importé sur @angular/core sinon erreur.

Je me trompais. J'importais-

  import { EventEmitter } from 'events';
 

donc j'ai eu une erreur

1voto

ignacioSG Points 24
 import { Component, Output } from '@angular/core';
import { slideToRight } from '../../../../router.animations';
import { Router, ActivatedRoute, UrlSegment } from '@angular/router';
import { EventEmitter } from 'protractor';

@Component({
  selector: 'app-new-user-input',
  templateUrl: './new-user-input.component.html',
  styleUrls: ['./new-user-input.component.css'],
  animations: [slideToRight()]
})
export class NewUserInputComponent {

  newUserInfoComplete = false;
  @Output() newUserInfoCompleteEvent = new EventEmitter <boolean> ();

  constructor(private router: Router, r: ActivatedRoute) {
    r.url.subscribe((s: UrlSegment[]) => {
      console.log("url", s);
    });
  }
  sendNewUserInfoComplete(){
    this.newUserInfoCompleteEvent.emit(!!this.newUserInfoComplete);
  }


  displaySibling() {
    console.log(this.router);
    this.router.navigate(['../', { outlets: { newuserorginfo: ['newuserorginfo'] } }])
  }

  closeBlade() {
    this.router.navigate([{ outlets: { newuserinput: null } }]);
  }

}
 

essaye ça

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X