2017-02-01 2 views
1

На этой странице here.Угловая 2 не перерисовывается до тех пор, пока я не перейду на страницу?

Возможно, что кнопка входа в систему Facebook изначально отключена. (Использование [disabled]="myProperty")

После запроса API /facebooklogin/isnewuser возвращается, он включен.

Все работает нормально. Тем не менее, кнопка не будет повторно развернута, пока я не нажму на страницу.

Я также заметил, что это происходит с большинством вещей, связанных с привязкой данных в Angular.

  • Это намеренное поведение?
  • Есть ли вообще вокруг этого?
  • Является ли это специфическим для Углового?

Испытано на Firefox & Chrome

ответ

4

Кажется, что для некоторого обнаружения изменений причина не происходит так, как должно быть. Вы можете "заставить" его NgZone или вручную запустить обнаружение изменений с ChangeDetectorRef:

import { ChangeDetectorRef } from '@angular/core' 

constructor(private ref: ChangeDetectorRef) {} 

, а затем запустить detectChanges() после установки переменную:

// whatever you are using to disable/enable button 
this.myProperty = false; 
this.ref.detectChanges(); 

или использование NgZone:

import { NgZone } from '@angular/core' 

constructor(private ngZone: NgZone) {} 

и добавить что-то вроде следующего, где вы включаете кнопку:

// whatever you are using to disable/enable button 
this.ngZone.run(() => {this.myProperty = false}) 

Я не могу ничего больше, чтобы, как, почему это происходит сказать. Я заметил, что однажды, когда эти вещи происходят без видимой причины, это, похоже, является одним из таких случаев. Если у кого-то есть представление об этом, скажите, пожалуйста. Не натолкнулся на всех, кто смог объяснить это, но :)

+0

Спасибо, что работает замечательно. – Baconbeastnz

+0

Добро пожаловать, рад, что я могу помочь! :) – Alex

Смежные вопросы