Как написать функцию подписчика Angular 6 - PullRequest
0 голосов
/ 14 сентября 2018

Я видел код в видео, и он выглядит следующим образом.

this.droppableService.dragEnd$.subscribe( next:event=> this.onDragEnd(event));

При включении в папку с моей директивой выдается следующее сообщение.

ERROR in src/app/draggable/dropzone.directive.ts(16,49): error TS1005: ',' expected.

Как я могу реализовать в Angular 6?

Ответы [ 2 ]

0 голосов
/ 15 сентября 2018
this.droppableService.dragEnd$.subscribe( next:event=> this.onDragEnd(event));  

Это правильный способ определения функции подписчика в angular6.

Но проблема в синтаксисе функции стрелки, которую вы передали в вызове подписки.

вопределить синтаксис функции стрелки

(arguments)=>{
     ......  
     code 
     ..... 
 }

, например, если у вас есть только одна строка кода в теле метода, вы можете определить функцию стрелки следующим образом

(argument)=> console.log('for single line in the method block');

, но в случае, когда выиметь одну строку кода, но более 2 аргументов или необходимо определить тип аргумента (как вы делаете в вашем случае next: event ), вам необходимо следовать первому синтаксису.

та же проблема, с которой вы сталкиваетесь в вашем случае

this.droppableService.dragEnd$.subscribe( next:event=> this.onDragEnd(event));

, когда вы передаете аргумент next: Event (следующий аргумент типа Event) через ошибку, пока вы его создаете.

если у вас есть intelliSense в вашем редакторе, он выдает предупреждение, что ожидаемый 1 получил 2 примерно так.

, поэтому ниже определите, что оба синтаксиса должны работать.

  • это.droppableService.dragEnd $ .subscribe ((next: event) => {this.onDragEnd (event)});

  • this.droppableService.dragEnd $ .subscribe(next => this.onDragEnd (event));

0 голосов
/ 14 сентября 2018

Вы можете назначить тип следующим образом:

this.droppableService.dragEnd$.subscribe( (next:event) => {
  this.onDragEnd(next);
});

Или, если событие имеет следующий тип:

this.droppableService.dragEnd$.subscribe( (event:next) => {
  this.onDragEnd(event);
});

Примечание: $ следует ставить в start из Observable, subject и BehaviorSubject, а не в конце.

...