angularおよびWeb開発は初めてですが、さまざまなWebページを設計し、HTTPクライアントモジュールを使用してサーバーからデータを取得できました。
サーバーからデータを取得しているときに、進行状況スピナーを表示したいのですが、できません。 Googleで検索しましたが、何もできませんでした。これを達成するのを手伝ってください。
コード:
login.component.ts
userLogin() {
console.log('logging in');
this.eService.signIn(this.user_name, this.password)
.subscribe(
data => {
console.log(data);
this.admin = data;
if ( this.admin.firstLogin === true) {
// go to update admin password
} else {
this.router.navigate(['/dashboard']);
}
localStorage.setItem('isLoggedin', 'true');
}
);
}
login.html
<div class="login-page" [@routerTransition]>
<div class="row justify-content-md-center">
<div class="col-md-4">
<img src="assets/images/logo.png" width="150px" class="user-avatar" />
<h1>Users/h1>
<form role="form">
<div class="form-content">
<div class="form-group">
<input type="text" name="username" [(ngModel)]="user_name" class="form-control input-underline input-lg" id="" placeholder="username">
</div>
<div class="form-group">
<input type="password" name="password" [(ngModel)]="password" (keyup.enter)="userLogin()" class="form-control input-underline input-lg" id="" placeholder="password">
</div>
</div>
<a class="btn rounded-btn" (click)="userLogin()"> Log in </a>
<a class="btn rounded-btn" >Clear</a>
</form>
</div>
</div>
</div>
サインインサービスをリクエストするときに、スピナーを見せたいのですが、手伝ってください、どうすればいいですか?
これは多くの開発者にとって簡単なことですが、私にとってはやや難しくなっています。
次のように、スピナーをHTMLコードに追加します。
<img *ngIf="loading" src="assets/my-spinner.gif" /> <!-- Or use a CSS one if you like -->
次に、TypeScriptで、loading
という変数を作成し、次のように設定する必要があります。
userLogin() {
console.log('logging in');
this.loading = true; // Add this line
this.eService.signIn(this.user_name, this.password)
.subscribe(
data => {
console.log(data);
this.loading = false; // And this one
this.admin = data;
if ( this.admin.firstLogin === true) {
// go to update admin password
} else {
this.router.navigate(['/dashboard']);
}
localStorage.setItem('isLoggedin', 'true');
}
);
}
これにより、サービスの実行中にloading
がtrueに設定されます
_ng4-loading-spinner
_ を使用できます
_npm i ng4-loading-spinner --save
_を実行します
モジュールをアプリケーションのルートモジュールにインポートする
_import { Ng4LoadingSpinnerModule } from 'ng4-loading-spinner';
_
インポートエントリを作成する
_ imports: [ Ng4LoadingSpinnerModule.forRoot() ]
_
スピナーコンポーネントをルートレベルコンポーネントに含めます。
_<ng4-loading-spinner> </ng4-loading-spinner>
_
subscribe
コールバック内でshow()
およびhide()
を使用します
_import { Ng4LoadingSpinnerService } from 'ng4-loading-spinner';
constructor(
private spinnerService: Ng4LoadingSpinnerService
) { }
userLogin() {
this.spinnerService.show();
console.log('logging in');
this.eService.signIn(this.user_name, this.password)
.subscribe(
data => {
console.log(data);
this.admin = data;
if ( this.admin.firstLogin === true) {
// go to update admin password
} else {
this.router.navigate(['/dashboard']);
}
localStorage.setItem('isLoggedin', 'true');
},
()=>this.spinnerService.hide();
);
}
_
まだスピナーのロードを角度で検索する人のために、気軽に見てください:
最初の読み込みだけが必要な場合は、外観を見るだけです。 How To Style Angular Application Loading With Angular CLI Like a Boss by Tomas 。
ここでスピナーをロードする4つの方法をすべて確認したい場合は、次のようにします。
Angular App でローディングスピナーを作成する4つの方法)= Cristian.