标签: angular7

matDialog 中的延迟加载模块

我有一个组件,它是延迟加载模块的一部分。

有没有办法 matDialog.open() 和延迟加载模块并显示组件?

export class testComponent implements OnInit {
  constructor(
    public matDialog: MatDialog,
    private moduleLoader: NgModuleFactoryLoader
  ) {}
  ngOnInit() {}

  openModal() {
    this.moduleLoader
      .load("./modules/test-modal/test-modal.module#TestModalModule")
      .then((module: NgModuleFactory<any>) => {
        this.matDialog.open(/*insert component and load the module*/);
      });
  }
}
Run Code Online (Sandbox Code Playgroud)

angular6 angular7

5
推荐指数
1
解决办法
4405
查看次数

Angular 7:Formvalidation,Validators.pattern 不起作用

我只需要一个来自匹配整数的验证。因此我使用pattern带有正则表达式的验证器(见下文)。此外,该字段不应为空,因此我添加了required验证器。

但pattern错误永远不会被触发。我阅读了 angular 文档并查看了 的源代码,pattern但对我来说仍然没有意义。此外,我已经阅读了几乎所有与此主题相关的关于 stackoverflow 的问题。但我仍然无法弄清楚为什么该模式不起作用。

或许有大佬可以帮帮我,谢谢!

这是我的代码 component.ts:

// definition of the formcontrol
hours = new FormControl('', [
  Validators.required,
  Validators.pattern('^[0-9]*$'),
])

// for debugging
log() {
  console.log('required: ', this.hours.hasError('required'));
  console.log('pattern: ', this.hours.hasError('pattern'));
  console.log('Erros: ', this.hours.errors);
}
Run Code Online (Sandbox Code Playgroud)

模板:

<mat-form-field>
  <input matInput [formControl]="hours" (input)="log()"
    placeholder="Anzahl der ausbezahlten Überstunden" type="number">
  <mat-error *ngIf="hours.hasError('required') && !hours.hasError('pattern')">
    Anzahl der Überstunden fehlt!
  </mat-error>
  <mat-error *ngIf="!hours.hasError('required') && hours.hasError('pattern')">
    Anzahl muss eine Ganzzahl sein!
  </mat-error>
</mat-form-field>
Run Code Online (Sandbox Code Playgroud)

例子inputValue="": …

typescript angular angular-reactive-forms angular7

5
推荐指数
1
解决办法
1万
查看次数

Angular 7 HTTP 拦截器不工作

我是 Angular 的新手,我正在尝试实现 api 调用,它在所有 api 的标头中发送令牌,所以我正在使用拦截器。

我无法在请求中设置标头。

jwt.interceptor.ts

import { Injectable } from '@angular/core';
import { HttpRequest, HttpHandler, HttpEvent, HttpInterceptor } from '@angular/common/http';
import { Observable } from 'rxjs';

@Injectable()
export class JwtInterceptor implements HttpInterceptor {
    constructor() { }

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {

        let currentUser = localStorage.getItem('useremail')
        let currentUserToken = localStorage.getItem('token')
        if (currentUser && currentUserToken) {
            request = request.clone({
                setHeaders: {
                    'Authorization': `${currentUserToken}`
                }
            });
        }
        // console.log("Request", request)
        return next.handle(request);
    }
}
Run Code Online (Sandbox Code Playgroud)

app.module.ts

import { BrowserModule …
Run Code Online (Sandbox Code Playgroud)

angular-http-interceptors angular7

5
推荐指数
1
解决办法
9069
查看次数

从 Angular 5 升级到 Angular 7 后,找不到“AppModule”的 NgModule 元数据

我们的开发团队最近将一个 Angular 5 项目更新到了 Angular 7。我已经下载了 repo 并且我正在尝试构建源代码,但是当我运行ng build命令时,我在 No NgModule metadata found for 'AppModule' 中得到一个错误.

在此处输入图片说明

如果我运行ng --version命令,它会显示以下内容:

  • 角 CLI:7.3.6
  • 节点:11.10.0
  • 操作系统:win32 x64
  • 角度:7.2.10

该app.module.ts文件是:

import { BrowserModule } from '@angular/platform-browser';
import { NgModule } from '@angular/core';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { AdminComponent } from './layout/admin/admin.component';
import { AdminComponent1 } from './layout/admin1/estimate.component';
import { AuthComponent } from './layout/auth/auth.component';
import { BrowserAnimationsModule …
Run Code Online (Sandbox Code Playgroud)

angular angular7

5
推荐指数
1
解决办法
7456
查看次数

使用 sqlite 作为 angular v7 的数据库

我正在构建一个带有 angular 的小型 SPA,由于我是 angular 的新手,因此我将 angular 教程用作我的应用程序的路线图。一切正常,直到从 sqlite 数据库检索数据(由于实现限制,不可能使用任何其他类型的后端代码)。教程(https://angular.io/tutorial/toh-pt6)使用内存数据库,这显然不适合我。我想要从 sqlite 检索数据的服务并且可以注入到组件中

成分

   import { Component, OnInit } from '@angular/core';
   import { Areport } from '../../classess/areport';
   import { ReportService } from "../../services/report.service";
@Component({
  selector: 'app-daily-report',
  templateUrl: './daily-report.component.html',
  styleUrls: ['./daily-report.component.css']
})
export class DailyReportComponent implements OnInit {
  reports : Areport[];
  constructor(private reportService: ReportService) { }
  getReports(): void {
    this.reportService.getReports()
        .subscribe( reports => this.reports = reports)
  }
  ngOnInit() {
    this.getReports();
  }
}
Run Code Online (Sandbox Code Playgroud)

报告服务

import { Injectable } from '@angular/core'; 
import …
Run Code Online (Sandbox Code Playgroud)

sqlite angular7

5
推荐指数
1
解决办法
2万
查看次数

如何从提交验证 ngx-select-dropdown?

我有一个表格,其中我将 ngx-select-dropdown 与 angular7 一起使用。在我的表单中选择选项是必需的。我想在提交表单时验证它。但是我的验证方法不适用于 ngx-select-dropdown 库,并且在 ngx-select-dropdown 的文档中我找不到任何有关验证的帮助信息。是否可以验证它?

 <ngx-select-dropdown (change)="onSelectDropdown($event)" name="unit" [config]="config"
[ngClass]="{ 'is-invalid': f.submitted && !unit.valid }"
[options]="unitsList"
[(ngModel)]="createUser.unit" id="unit" #unit="ngModel" required>
</ngx-select-dropdown>
<div *ngIf="f.submitted && !unit.valid" class="invalid-feedback">Unit is required</div>

Run Code Online (Sandbox Code Playgroud)

validation angular-validation angular7 ngx-select-dropdown

5
推荐指数
0
解决办法
1031
查看次数

如何在 Angular 7 中编码包含特殊字符的查询参数?

我正在尝试在 Angular 7 中对查询参数值进行编码。但是当我的查询参数值包含任何特殊字符时,我得到 400 Bad Request 状态代码

失败的请求 URL: http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE

但是,当我的查询参数值不包含任何特殊字符时,我得到 200 OK 状态代码。

请求成功地址: http://localhost/api/67/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE

预期的请求 url 必须像 http://localhost/cardvalues?parentcardvalues=VALUE1&parentcardvalues=VALUE2

下面是我的代码,

parentcardvalues=["STONE","STONE AGE"]

let myparams = new HttpParams();

    if(parentcardvalues.length != 0)
       parentcardvalues.forEach((value) => { 

myparams = myparams.append( 'parentcardvalues',   encodeURIComponent(value) );

});

 this.http.get(this.baseUrl + 'api/67/cardvalues', {params: myparams});
Run Code Online (Sandbox Code Playgroud)

Swagger 规范是,

卷曲

curl -X GET "http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE" -H  "accept: application/json"
Run Code Online (Sandbox Code Playgroud)

请求网址

http://localhost/api/cardvalues?parentcardvalues=STONE&parentcardvalues=STONE%20AGE
Run Code Online (Sandbox Code Playgroud)

javascript http urlencode angular angular7

5
推荐指数
1
解决办法
1万
查看次数

Angular 7:拦截器中的等待函数

我在我的第一个 Angular 应用程序中构建了一个错误拦截器,这对我来说是全新的。当出现401响应代码时,拦截器会尝试刷新 Firebase 授权令牌。因此,我编写了以下代码:

@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
constructor(private authService: AuthService, private alertService: AlertService) { }

intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(
        catchError(err => {
            if (err.status === 401) {
                let user = localStorage.getItem('currentUser');
                if (!user) {
                    this.logout(false);
                    return throwError(err.error);
                }
                let currentUser = JSON.parse(user);
                if (!currentUser || !currentUser.stsTokenManager || !currentUser.stsTokenManager.accessToken) {
                    this.logout(false);
                    return throwError(err.error);
                }
                const reference = this;
                this.authService.getToken(currentUser, true).then(t => {
                    // How do I await and return this …
Run Code Online (Sandbox Code Playgroud)

typescript angular angular7

5
推荐指数
1
解决办法
1588
查看次数

错误 TS2741:类型中缺少属性

在文件 models/User.model.ts(见下文)中,我尝试设置一个方法 isEqual,如下面的代码所示。有人可以更正我的代码吗?

文件模型/User.model.ts:

export class User {
    constructor(
    public firstName: string,
    public lastName: string,
    ) {}

    isEqual (other : User): boolean {
    return other === this;
    }
}
Run Code Online (Sandbox Code Playgroud)

文件服务/user.service.ts :

import { User } from '../models/User.model';
import { Subject } from 'rxjs/Subject';

export class UserService {

    private users: User[] = [
    {
        firstName: 'William',
        lastName: 'Jones'
    },
    {
        firstName: 'John',
        lastName: 'Doe'
    }
    ];
Run Code Online (Sandbox Code Playgroud)

...

services/user.service.ts(7,2) 中的错误:错误 TS2741:类型“{ firstName: string;”中缺少属性“isEqual”;lastName: string;}' 但在类型 'User' 中是必需的。

methods typescript angular angular7

5
推荐指数
2
解决办法
1万
查看次数

当子组件位于路由器出口 Angular 时,从子组件调用父组件函数

在子组件中发生事件后,我需要通过调用父组件中的函数来更新父组件中的一些数据。这里我的子组件位于父组件的路由器出口中

parentComponent.html:-

<div class="row">
     Parent component
</div>
<router-outlet></router-outlet>
Run Code Online (Sandbox Code Playgroud)

父组件.ts:-

fetchRequestsStatus(role, user) {
if (this.userRole) {
  this.dashboardService.getStatusCount(role, user).subscribe(
    res => {
      console.log(res)
    },
    err => {
      console.log(err)
    })
}
Run Code Online (Sandbox Code Playgroud)

}

现在在子级中单击按钮,我需要fetchRequestsStatus(role, user)通过从子级传递参数来调用函数。我已经看到@input @ output 装饰器用于共享数据,但这里我的子组件位于路由器内部。

我该如何处理?

angular angular7

5
推荐指数
1
解决办法
1414
查看次数