告诉我,在授权期间如何最好地处理用户数据?将有关他的一些数据写入 localStorage 并从那里获取或将有关用户的数据存储在服务中?
还有一个附带问题。如何在客户端查看token的过期时间?我有寻找 401 响应的想法,但我认为这是错误的。
告诉我,在授权期间如何最好地处理用户数据?将有关他的一些数据写入 localStorage 并从那里获取或将有关用户的数据存储在服务中?
还有一个附带问题。如何在客户端查看token的过期时间?我有寻找 401 响应的想法,但我认为这是错误的。
未捕获的错误:模板解析错误:'mat-checkbox' 不是已知元素:
如果 'mat-checkbox' 是一个 Angular 组件,则验证它是否是该模块的一部分。
如果“mat-checkbox”是一个 Web 组件,则将“CUSTOM_ELEMENTS_SCHEMA”添加到该组件的“@NgModule.schemas”以禁止显示此消息。("
<input matInput type="number" [(ngModel)]="id">
[ERROR ->]<mat-checkbox>1</mat-checkbox>
<button mat-raised-button (click)="getUser(id)">Выбрать юзера</button>"):ng:///AuthorizationModule/AuthorizationPageComponent.html@3:2
app.module.ts
import { NgModule } from '@angular/core';
import { AppComponent } from './app.component';
import { SharedModule } from './modules/shared/shared.module';
import { AppRoutingModule } from './app-routing.module';
import { AuthorizationModule } from './modules/authorization/authorization.module';
import { FormsModule } from '@angular/forms';
import { MaterialModule } from './modules/material/material.module';
import { BrowserModule } from '@angular/platform-browser';
import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
@NgModule({
declarations: [
AppComponent
],
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
AuthorizationModule,
MaterialModule,
SharedModule,
AppRoutingModule
],
providers: [],
bootstrap: [AppComponent],
entryComponents: [AppComponent]
})
export class AppModule { }
材料.module.ts
// Angular Material Components
import {MatCheckboxModule} from '@angular/material';
import {MatButtonModule} from '@angular/material';
import {MatInputModule} from '@angular/material/input';
import {MatAutocompleteModule} from '@angular/material/autocomplete';
import {MatDatepickerModule} from '@angular/material/datepicker';
import {MatFormFieldModule} from '@angular/material/form-field';
import {MatRadioModule} from '@angular/material/radio';
import {MatSelectModule} from '@angular/material/select';
import {MatSliderModule} from '@angular/material/slider';
import {MatSlideToggleModule} from '@angular/material/slide-toggle';
import {MatMenuModule} from '@angular/material/menu';
import {MatSidenavModule} from '@angular/material/sidenav';
import {MatToolbarModule} from '@angular/material/toolbar';
import {MatListModule} from '@angular/material/list';
import {MatGridListModule} from '@angular/material/grid-list';
import {MatCardModule} from '@angular/material/card';
import {MatStepperModule} from '@angular/material/stepper';
import {MatTabsModule} from '@angular/material/tabs';
import {MatExpansionModule} from '@angular/material/expansion';
import {MatButtonToggleModule} from '@angular/material/button-toggle';
import {MatChipsModule} from '@angular/material/chips';
import {MatIconModule} from '@angular/material/icon';
import {MatProgressSpinnerModule} from '@angular/material/progress-spinner';
import {MatProgressBarModule} from '@angular/material/progress-bar';
import {MatDialogModule} from '@angular/material/dialog';
import {MatTooltipModule} from '@angular/material/tooltip';
import {MatSnackBarModule} from '@angular/material/snack-bar';
import {MatTableModule} from '@angular/material/table';
import {MatSortModule} from '@angular/material/sort';
import {MatPaginatorModule} from '@angular/material/paginator';
import {NgModule} from '@angular/core';
const modules = [
MatCheckboxModule,
MatButtonModule,
MatInputModule,
MatAutocompleteModule,
MatDatepickerModule,
MatFormFieldModule,
MatRadioModule,
MatSelectModule,
MatSliderModule,
MatSlideToggleModule,
MatMenuModule,
MatSidenavModule,
MatToolbarModule,
MatListModule,
MatGridListModule,
MatCardModule,
MatStepperModule,
MatTabsModule,
MatExpansionModule,
MatButtonToggleModule,
MatChipsModule,
MatIconModule,
MatProgressSpinnerModule,
MatProgressBarModule,
MatDialogModule,
MatTooltipModule,
MatSnackBarModule,
MatTableModule,
MatSortModule,
MatPaginatorModule
];
@NgModule({
imports: [...modules],
exports: [...modules]
})
export class MaterialModule { }
授权模块.ts
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { AuthorizationPageComponent } from './components/authorization-page/authorization-page.component';
import { FormsModule } from '@angular/forms';
@NgModule({
declarations: [
AuthorizationPageComponent
],
imports: [
CommonModule,
FormsModule
]
})
export class AuthorizationModule { }
没有任何材料角度组件起作用。首先我手动设置它(创建一个模块,通过 npm 下载材料),然后通过 ng add @angular/material 尝试它 - 它没有帮助。
例如,数组中有几个对象:
let shop = [{
id: 105,
date: '2018-10-11',
fact: 100,
plan: 95
}, {
id:105,
date: '2018-10-12',
fact: 105,
plan: 100
}, {
id:106,
date: '2018-10-11',
fact: 110,
plan: 115
}, {
id:106,
date: '2018-10-12',
fact: 120,
plan: 115
}];
您需要从具有 id 和 fact 和 plan 数组的对象中获取结构(例如,sales):
let groups = [{
id: 105,
fact: [100, 105],
plan : [95, 100]
}, {
id: 106,
fact: [110, 120],
plan: [115, 115]
}];
console.log(groups);
我尝试使用reduce,但随后我一般将所有事实和计划加起来,而不考虑 id。我将第一个数组运行到forEachand map,但我也不知道如何让 id 保持唯一,fact并plan合并到这些 id 的数组中。