标签: angular

使用AOT时,注入时会丢弃对传递给forRoot的对象的更改

概观

我看到奇怪的行为,因为通过解构赋值(或Object.assign)添加到对象的属性在传递时会出现,forRoot但在注入服务时不存在.此外,初始化后进行的更新在传递到forRoot服务时存在但在注入服务时不存在.这仅在使用AOT构建时发生.

我创建了一个重现问题的最小项目:https: //github.com/bygrace1986/wat

包版本

  • 角度:5.2.0
  • angular-cli:1.6.4(我的应用),1.7.4(我的测试)
  • 打字稿:2.4.2

建立

创建一个具有静态forRoot方法的模块,该方法将接受一个对象,然后通过它提供InjectionToken并注入到服务中.

TestModule

import { NgModule, ModuleWithProviders } from '@angular/core';
import { CommonModule } from '@angular/common';

import { TestDependency, TEST_DEPENDENCY, TestService } from './test.service';

@NgModule({
  imports: [
    CommonModule
  ],
  declarations: []
})
export class TestModule {
  static forRoot(dependency?: TestDependency): ModuleWithProviders {
    return {
      ngModule: TestModule,
      providers: [
        TestService,
        { provide: TEST_DEPENDENCY, useValue: dependency }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

TestService的

import …
Run Code Online (Sandbox Code Playgroud)

angular-cli angular2-aot angular

7
推荐指数
1
解决办法
941
查看次数

mat-tab不是已知的元素错误

我正在尝试使用mat-tab.我在html中添加了以下代码

<mat-tab-group>
    <mat-tab label="Tab 1"> <app-latest-article></app-latest-article></mat-tab>
    <mat-tab label="Tab 2">  <app-trending-article></app-trending-article> </mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)

在ts文件中

import {MatTabsModule} from '@angular/material/tabs';
Run Code Online (Sandbox Code Playgroud)

我收到了错误

<mat-tab-group>
    <mat-tab label="Tab 1"> <app-latest-article></app-latest-article></mat-tab>
    <mat-tab label="Tab 2">  <app-trending-article></app-trending-article> </mat-tab>
</mat-tab-group>
Run Code Online (Sandbox Code Playgroud)

typescript angular-material angular mat-tab

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

Angular 5 + Bootstrap工具提示不起作用

我究竟做错了什么?

我正在尝试使用Bootstrap工具提示在Angular 5中工作.我们按照建议通过index.html页面的页脚设置了Javascript库.Bootstrap上的文档使用JQuery来获取元素,然后调用tooltip()它们上的函数.

想我可能也可以这样做,但是使用getElementById函数来获取按钮的句柄,我写了以下内容(按钮是在其上定义了工具提示的项目):

  ngAfterViewInit(){
    let button = document.getElementById('tooltipBtn');
    button.tooltip();
  }
Run Code Online (Sandbox Code Playgroud)

模板代码(单独的文件):

<button type="button" class="btn btn-secondary" data-toggle="tooltip" data-placement="bottom" title="Tooltip on bottom" id="tooltipBtn">
  Tooltip on bottom
</button>
Run Code Online (Sandbox Code Playgroud)

我得到的错误(在浏览器控制台中):

ERROR
Error: button.tooltip is not a function
Run Code Online (Sandbox Code Playgroud)

javascript bootstrap-4 angular angular5

7
推荐指数
2
解决办法
7172
查看次数

如何访问Angular 4/5中的多个复选框值

我想从我的复选框中获取值,但我只能得到真或假.

这是我的模板:

<h4>Categories</h4>
<div class="form-check" *ngFor="let cat of categories$|async">
    <input class="form-check-input" [(ngModel)]="cat.id" name="{{ cat.name }}" type="checkbox" id="{{cat.name}}">
    <label class="form-check-label" for="{{cat.name}}">
        {{cat.name}}
    </label>
</div>
Run Code Online (Sandbox Code Playgroud)

这是我的组件

this.categories$ = this.storeService.getAllCategories().pipe(
    map(result => (result as any).data),
    tap(r => console.log(r))
)
Run Code Online (Sandbox Code Playgroud)

我的组件基本上从外部api获取类别列表

在此输入图像描述

checkbox angular angular-forms

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

Angular CLI 6:未知选项:'--locale'

运行ng serve一个自定义语言环境数据的文档说明(https://next.angular.io/guide/i18n新角6),我得到这个错误:

Unknown option: '--locale'
Run Code Online (Sandbox Code Playgroud)

delete-output-path和发生同样的事情named-chunks.我们现在怎么设置这个标志?

angular-cli angular

7
推荐指数
2
解决办法
8152
查看次数

带有凭证的Angular 6 httpClient Post

我有一些代码可以发布一些数据来创建数据记录。

它在服务中:

这是代码:

import { Injectable } from '@angular/core';
import { HttpClient, HttpHeaders } from '@angular/common/http';

const httpOptions = {
  headers: new HttpHeaders({ 'Content-Type': 'application/json' })
};

@Injectable({
  providedIn: 'root'
})
export class ApiService {

  constructor(private http: HttpClient) { }

  create() {
      const postedData = { userid: 1, title: 'title here', body: 'body text' };
      return this.http.post('https://jsonplaceholder.typicode.com/posts', postedData, httpOptions).subscribe(result => {
        console.log(result);
      }, error => console.log('There was an error: '));
  }

}
Run Code Online (Sandbox Code Playgroud)

我的问题是...我该怎么做才能从用户登录时获得该网址的要求...我如何传递凭据?

javascript typescript angular angular6

7
推荐指数
3
解决办法
2万
查看次数

使用Angular CLI v6生成空白工作区

是否可以使用Angular CLI v6生成空白工作区?它可能包含初始应用程序但在默认projects文件夹中.

angular-cli angular

7
推荐指数
1
解决办法
733
查看次数

如何获得"Observable.of([]);" 上班?

什么是正确的表达和导入Observable.of([]);.

import { of } from 'rxjs'; 不适合我.

rxjs typescript rxjs5 angular rxjs6

7
推荐指数
1
解决办法
6208
查看次数

在构造角度6库时为导出的符号生成的元数据中遇到错误

从我的库中执行'ng build'时出现以下错误.

我目前正在使用Angular 6,但我相信这个错误与版本无关.

/home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:13:1:为导出的符号'KeycloakService'生成的元数据中遇到错误:
/home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:18 : 12:收集的元数据包含一个错误,将在运行时:只能初始化变量和常量,因为模板编译器需要此变量的值.
{"_ _ symbolic":"错误","消息":"变量未初始化","行":17,"字符":11}错误:/ home/rafaelvicio/desenv/my-lib/arquitetura-web/projects/pf-siseg/src/lib/keycloak-service/keycloak.service.ts:13:1:为导出的符号'KeycloakService'生成的元数据遇到错误:
/home/rafaelvicio/desenv/my-lib/arquitetura-web/projects /pf-siseg/src/lib/keycloak-service/keycloak.service.ts:18:12:收集的元数据包含将在运行时报告的错误:只能初始化变量和常量,因为此变量的值为模板编译器需要的.
{"_ _ symbolic":"错误","消息":"变量未初始化","行":17,"字符":11} at/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@ angular/compiler-cli/src/metadata/collector.js:707:31位于validateMetadata的Array.forEach()(/ home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@ angular/compiler-cli/src/metadata/collector.js:695:46)在MetadataCollector.getMetadata(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/metadata/collector.js:550 :21)在Object.getSourceFileMetadata上的MetadataCache.getMetadata(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/metadata_cache.js:86:41) home.rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/compiler_host.js:112:56)at Object.readMetadata(/ home/rafaelvicio/desenv/my-lib TsompilerAotCompiler上的/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/metadata_reader.js:46:37)StaticSymbolResolver.getModuleMetadata中的TypeCheckHostAdapter.getMetadataFor(/home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler-cli/src/transformers/compiler_host.js:464:38)(/ home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules/@angular/compiler/src/aot/static_symbol_resolver.js:480:49)在StaticSymbolResolver._createSymbolsOf(/ home/rafaelvicio/desenv/my-lib/arquitetura-web/node_modules) /@angular/compiler/src/aot/static_symbol_resolver.js:268:33)

keycloak.service.ts:

import { Injectable } from '@angular/core';
import { KeycloakLoginOptions } from './keycloak.d';

import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs/Observable';

import * as Keycloak from './keycloak';

export type KeycloakClient = Keycloak.KeycloakInstance;
type InitOptions = Keycloak.KeycloakInitOptions;

@Injectable()
export class KeycloakService {

    constructor(private http: HttpClient) { }

    static …
Run Code Online (Sandbox Code Playgroud)

angular-cli angular angular-library angular-cli-v6

7
推荐指数
3
解决办法
2638
查看次数

从Angular 5更新到6后,我不断收到错误:无法解析xml2js中的计时器

就像标题所说,我继续得到这个奇怪的错误.我也尝试使用npm uninstall xml2js卸载它,但直到现在还没有任何工作.

在此输入图像描述

npm xml2js angular angular5 angular6

7
推荐指数
1
解决办法
5469
查看次数