У меня есть объект пользователя, на который я подписываюсь. Если пользователь равен определенному имени, он не должен показывать кнопку. Я не знаю, почему это не влияет на ngIf в HTML.

Мой HTML

 <input *ngIf = "showDelete" type = "button" (click) = 
 "deleteCustomer(customer._id)" value = "Delete" class = "btn btn-danger">

Мой ngOnInit в appcomponent.ts

    ngOnInit() {

let showDelete:boolean =true;

this.authService.getProfile().subscribe(profile => {
  this.username = profile.user.name

  if (this.username=="admin"){

    showDelete=false;
  }
},

Если я console.log, this.username и шоу delete, я получаю ожидаемые значения, но это не меняет логику в html

0
harryd 24 Май 2017 в 23:45

2 ответа

Лучший ответ

Вы должны объявить переменную showDelete как часть вашего компонента, чтобы она была доступна из шаблона:

public showDelete: boolean = true;

ngOnInit(): void {
    this.authService.getProfile().subscribe(profile => {
        this.username = profile.user.name;
        if (this.username == "admin") {
            this.showDelete = false;
        }
    });
}
1
Darin Dimitrov 24 Май 2017 в 20:48

У вас нет доступа к showDelete из шаблона, потому что он определен в ngOnInit ()

Попробуйте определить это так:

 class MyClass {
   showDelete:boolean;

   ngOnInit() {
    this.authService.getProfile().subscribe(profile => {
      this.username = profile.user.name
      if (this.username=="admin"){
        this.showDelete = false;
      }
    }
}
0
Ratan 24 Май 2017 в 20:53