我正在使用Angular的*ngIf
指令来检查用户当前是否已登录.根据用户的身份验证状态(我正在使用Firebase身份验证),应显示登录按钮或用户菜单.这是代码:
html的
<div class="right-side">
<!-- Header Widget -->
<div class="header-widget">
<!-- User Menu -->
<div class="user-menu" *ngIf="afAuth.authState | async as user; else showLogin">
<div class="user-name"><span><img src="assets/images/agent-03.jpg" alt=""></span>Hi, {{ ... }}!</div>
<ul>
<li><a routerLink="my/profile"><i class="sl sl-icon-user"></i> My Profile</a></li>
<li><a routerLink="my/bookmarks"><i class="sl sl-icon-star"></i> Bookmarks</a></li>
<li><a routerLink="my/properties"><i class="sl sl-icon-docs"></i> My Properties</a></li>
<li (click)="logOut()"><a routerLink="/"><i class="sl sl-icon-power"></i> Log Out</a></li>
</ul>
</div>
<ng-template #showLogin>
<a routerLink="/login-register" class="sign-in"><i class="fa fa-user"></i> Log In / Register</a>
</ng-template>
<a routerLink="/submit-property" class="button border">Submit Property</a>
</div>
<!-- Header Widget …
Run Code Online (Sandbox Code Playgroud) 我从我的项目中本地存储的JSON文件中获取数据.JSON字符串是一个位置数组,其结构如下:
JSON文件
{
"locations": [
{
"title": "ABC",
"latitude": -1.2596551,
"longitude": 36.7066604,
"routes":["22","23","105","115"],
"fare":[],
"matatu":[]
},
{
"title": "Adams Arcade",
"latitude": -1.3004204,
"longitude": 36.7770793,
"routes": ["2","4W","102","24","24C","111"],
"fare":[],
"matatu":[]
},
{
"title":"Aga Khan Hospital",
"latitude":-1.2620125,
"longitude":36.8186399,
"routes":["11A","11F","106","107","116"],
"fare":[],
"matatu":[]
}
]
}
Run Code Online (Sandbox Code Playgroud)
我没有使用管道动态过滤数据,而是在my中实现了一个函数provider
来处理这个问题.这是代码:
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
import { Geolocation } from '@ionic-native/geolocation';
@Injectable()
export class LocationProvider {
data: any;
constructor(public http: Http, public geolocation: Geolocation) {
}
load(){ …
Run Code Online (Sandbox Code Playgroud)