#angular #ionic4
#angular #ionic4
Вопрос:
Я использую ionic framework для создания приложения. Я хочу выполнить оператор if / else для отображения div в html. я беру данные из URL-адреса навигации со страницы 1 на страницу 2. на странице 2 я использую активированные параметры маршрута для получения данных со страницы 1 .
Иногда данные, поступающие с URL mypage/iaw/null
-адреса, выглядят так, что я хочу проверить, не скрывает ли строка null div.
что я сделал
public myFlag: boolean = false;
id : any
constructor(private nav : NavController,private activatedRoute : ActivatedRoute) {
this.activatedRoute.params.subscribe((params) => {
this.id = params['id'];
});
if (this.id=="null") {
this.myFlag = true
}else{
this.myFlag = false
}
HTML
<div *ngIf="myFlag">
<ion-button expand="block" fill="outline"color="success" (click)="navigate(id)">Flight route</ion-button>
</div>
<div *ngIf="!myFlag">
No data
</div>
мой пример URL
localhost/flightserachdetails/IA172/Isfahan/1555496100/CR9/scheduled/Iraqi Airways/IAW/null
Комментарии:
1. this.id является ли null строкой или это фактический null?
2. некоторое время в URL-адресе появляется null, если нет строки. вот так
scheduled/IraqiAirways/IAW/null
Ответ №1:
Я думаю, что вам следует изменить свой код конструктора примерно так
constructor(private nav : NavController,private activatedRoute : ActivatedRoute) {
this.activatedRoute.params.subscribe((params) => {
this.id = params['id'];
this.myFlag = this.id == "null";
console.log(this.myFlag);
});
}
Главное здесь — инициализировать поле «id» внутри обработчика подписки ativate route.
Однако лучший способ реализовать маршрутизацию в angular — использовать RouterModule . Проверьте эту ссылку для получения более подробной информации https://angular.io/guide/router
Комментарии:
1. я помещаю оператор if else в активированный маршрут, и он работает нормально. спасибо за ключевой ответ
Ответ №2:
Вы можете реализовать оператор if else следующим образом:
<div *ngIf="myFlag;else other_content">
<ion-button expand="block" fill="outline"color="success (click)="navigate(id)">Flight route</ion-button>
</div>
<ng-template #other_content>
No data
</ng-template>
Ответ №3:
вы можете реализовать if else подобным образом, поэтому нет необходимости писать отдельный ngIf для проверки условия else
<div *ngIf="myFlag != null; elseCondition">
<ion-button expand="block" fill="outline"color="success" (click)="navigate(id)">Flight route</ion-button>
</div>
<ng-template #elseCondition>
No data
</ng-template>
Комментарии:
1. я просто редактирую свой ответ, пожалуйста, попробуйте с помощью!= null, чтобы он также проверял undefined, а также null
2. к сожалению, проблема smae
3. что такое консольный журнал myFlag ?