Сделать данные API от подписки глобальных угловых 5 - PullRequest
0 голосов
/ 15 мая 2018

Как сделать эту переменную автора доступной для любого метода?

У меня есть var author [], который назначается данными api в подписке, автор может быть привязан к свойству в компоненте html, но показывает пустой массив, если я проверяю по console.log под номерами 1 и 3.

enter image description here

public author = [];
pengarangEdit: FormGroup;

constructor(
 private route: ActivatedRoute,
 private authorService: AuthorService,
 private location: Location,
 private fb: FormBuilder
) { }

ngOnInit() {
  this.getAuthor();
  console.log(this.author); //..................................  1
}  

createForm() {
 this.pengarangEdit = this.fb.group({
  nama: ['', Validators.required ],
  email: ['', Validators.required ],
  alamat: ['', Validators.required ]
 });
}

getAuthor(): void{
  const id = +this.route.snapshot.paramMap.get('id');
  this.authorService.getAuthor(id)
  .subscribe(data => {
    this.author = data['data'][0]
    console.log(this.author) //.................................  2
  });
  console.log(this.author); //..................................  3
}

1 Ответ

0 голосов
/ 15 мая 2018

Ваши 1 и 3 console.log запускаются до завершения getAuthor (), и по этой причине они по-прежнему равны нулю.Это подписка, и она работает как асинхронная функция.Вы можете получить доступ к автору после завершения getAuthor ().

Если ваша стратегия обнаружения изменений - OnPush, сделайте markForCheck () после назначения автора в функции getAuthor ().Если нет, то Angular автоматически обновит переменную.

...