-<p>login works!</p>
+<form (ngSubmit)="onSubmit()">
+ <label>
+ Username:
+ <input type="text" [(ngModel)]="username" name="username" required>
+ </label>
+ <br>
+ <label>
+ Password:
+ <input type="password" [(ngModel)]="password" name="password" required>
+ </label>
+ <br>
+ <button type="submit" [disabled]="isLoading">Login</button>
+</form>
+<div *ngIf="error">{{ error }}</div>
+<div *ngIf="token">Welcome, {{ username }}! Your token is {{ token }}</div>
+import { Component, inject } from '@angular/core';
import { Store } from '@ngrx/store';
-import { login } from './store/login.actions';
-import { selectToken, selectError, selectIsLoading } from './store/login.selectors';
+import { login } from '../store/login.actions';
+import { selectError, selectIsLoading, selectToken } from '../store/login.selectors';
@Component({
selector: 'app-login',
- template: `
- <form (ngSubmit)="onSubmit()">
- <label>
- Username:
- <input type="text" [(ngModel)]="username" name="username" required>
- </label>
- <br>
- <label>
- Password:
- <input type="password" [(ngModel)]="password" name="password" required>
- </label>
- <br>
- <button type="submit" [disabled]="isLoading">Login</button>
- </form>
- <div *ngIf="error">{{ error }}</div>
- <div *ngIf="token">Welcome, {{ username }}! Your token is {{ token }}</div>
- `
+ imports: [],
+ templateUrl: './login.component.html',
+ styleUrl: './login.component.less'
})
export class LoginComponent {
+ private store = inject(Store);
+
username = '';
password = '';
token = '';
error = '';
isLoading = false;
- constructor(private store: Store) {
+ ngOnInit() {
this.store.select(selectToken).subscribe(token => (this.token = token));
this.store.select(selectError).subscribe(error => (this.error = error));
this.store.select(selectIsLoading).subscribe(isLoading => (this.isLoading = isLoading));