小编Meh*_*Meh的帖子

如何在角度6中创建全动态按钮?

我正在为我的应用程序创建动态组件,这些组件可以在程序的各个部分中重复使用。到目前为止,我已经能够创建文本输入,并使用将其动态添加和自定义componentFactory为表单,并且它们可以完美地工作。

下一部分是创建完全动态的按钮,当将其放置在目标视图中时可以对其进行自定义(就像带有表单的文本输入一样)。我试图使大多数事物通用,并且它们可以正常工作,但是我似乎遇到的问题是使(click)函数动态化。我也想添加需要使用触发的功能componentFactory,但是由于某种原因,我无法这样做。

我找不到任何资源可以详细说明我遇到的这个特定问题。这是我到目前为止所做的组件:

button.component.ts

import { Component, OnInit, ViewEncapsulation, Input } from '@angular/core';
import { FormGroup } from '@angular/forms';

@Component({
  selector: 'app-button',
  templateUrl: './button.component.html',
  styleUrls: ['./button.component.scss'],
  encapsulation: ViewEncapsulation.None
})
export class ButtonComponent implements OnInit {

  @Input() group: FormGroup;
  @Input() type: string;
  @Input() description: string;
  @Input() class: string;
  @Input() data: string;
  @Input() callFunction: string;


  constructor() { }

  ngOnInit() {
  }

}
Run Code Online (Sandbox Code Playgroud)

button.component.html

<div [formGroup]="group">
  <button type="{{ type }}" class="{{ class }}" (click)="{{callFunction}}">{{ description }}</button>
</div> …
Run Code Online (Sandbox Code Playgroud)

typescript angular

6
推荐指数
1
解决办法
2935
查看次数

使用 ngx-logger 依赖项在 Angular 6 中进行单元测试

有没有一种方法可以正确测试具有ngx-logger角度依赖性的类(假设我们可能使用一些已知的测试框架,例如 jasmine)?到目前为止,还没有资源可以帮助我提供一个用例,其中ngx-logger在单元测试中为具有此依赖性的类提供了模拟或提供。

jasmine typescript angular

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

如何在 angular 中使用 (#) 动态设置 id?

我正在开发一个使用动态组件的 angular 6 应用程序。我使用@ViewChild('<id>', { read: ViewContainerRef }) <id>;是为了引用divs我将用动态组件填充。在ViewContainerRef寻找一个#带有ID标签来识别它是指在模板中哪个项目。

我创建了一个手风琴,我想在其中动态添加一个特定的可重用组件,我通过上述过程在整个应用程序的其余部分一直在做。但是,由于手风琴中有许多选项卡,我想添加一个循环,使用*ngFor它可以为我完成工作,我在其中设置#id使用循环中指定的值。我实现了以下模板:

<app-create-feature-modal></app-create-feature-modal>
<app-button description="{{ 'pages[knowledge_base][buttons][accordion_add]' | translate }}" class="btn btn-primary btn-md accordion-button" (callFunction)="add()"></app-button>
<div class="acc">
  <div *ngFor="let item of meta; let i = index">
    <button class="accordion" (click)="toggle(i)">{{item.name}}</button>
    <div class="{{'panel panel-'+ i}}">
      <div #{{item.value}}></div>   <!--here-->
    </div>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

但是,在运行应用程序时,id未正确设置,在检查控制台时,我看到对的引用@ViewChild未定义,甚至在 html 中也没有定义 id,只是普通的 div。

我无法使用,id="{{item.value}}"因为ViewContainerRef无法识别它,这就是解决方案对我不起作用的原因。

有什么可能的方法可以实现这一目标吗?

html typescript angular

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

在angular 6中从浏览器控制台调用服务功能

我刚刚在中的一个方法中对某些方法进行了一些更改services,并想查看更改是否正常工作,但是我想知道是否有一种方法可以代替创建类并手动进行测试。在chrome的控制台中调用函数。

我已遵循示例来实现记录器服务,并将其添加到jwt service下面已创建的示例中。

不幸的是,我没有在应用程序中对该错误进行任何实现,因此我无法真正直接对其进行测试。我想检查两个条件是否都正常运行。我检查了这个答案,但是当我自己尝试时,它给我一个null错误(也许是因为这需要一个组件并且我想测试服务)。

举个例子,这是我的类,以及一个要在控制台中测试的例子:

Jwt.service.ts

import { Injectable } from '@angular/core';
import { TranslatePipe } from 'src/app/pipes/translate/translate.pipe';
import { LoggerService } from "src/app/services/logger/logger.service";
/**
* Injects the JSON web token service in the project
*/
@Injectable({
  providedIn: 'root'
})

/**
* This service is responsible for management of the jwt token, which would be used
* for authentication/authorization purposes. The service includes methods to save, delete
* and retrieve …
Run Code Online (Sandbox Code Playgroud)

typescript angular

3
推荐指数
1
解决办法
1129
查看次数

错误:预计没有打开的请求,发现 1 (Angular)

我正在尝试为angular6 中的服务创建一个测试用例。该服务有一堆不同的http请求方法(get, put, post等),并且在其中进行了一个 API 调用,以获取适当的响应。我正在尝试创建模拟http请求并返回响应的测试用例。但是,我遵循了一个教程,它显然可以帮助我做我想做的事。

但是,当我运行该服务的测试用例时,它给了我以下错误(出于隐私目的,我已对输入URL进行GET了审查:

Error: Expected no open requests, found 1: GET https://staging.xxxxxxxxxx.co.uk/rest/v11_1/oauth2/token
    at HttpClientTestingBackend.push../node_modules/@angular/common/fesm5/http/testing.js.HttpClientTestingBackend.verify (http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/common/fesm5/http/testing.js:326:1)
    at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/src/app/Services/adapter.service.spec.ts:22:13)
    at TestBed.push../node_modules/@angular/core/fesm5/testing.js.TestBed.execute (http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/core/fesm5/testing.js:1073:1)
    at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/node_modules/@angular/core/fesm5/testing.js:1224:29)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:388:1)
    at ProxyZoneSpec.push../node_modules/zone.js/dist/zone-testing.js.ProxyZoneSpec.onInvoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:288:1)
    at ZoneDelegate.push../node_modules/zone.js/dist/zone.js.ZoneDelegate.invoke (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:387:1)
    at Zone.push../node_modules/zone.js/dist/zone.js.Zone.run (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone.js:138:1)
    at runInTestZone (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:509:1)
    at UserContext.<anonymous> (http://localhost:9876/_karma_webpack_/webpack:/node_modules/zone.js/dist/zone-testing.js:524:1)
Run Code Online (Sandbox Code Playgroud)

我已经通过尝试浏览解决方案,以及为一个,但无济于事。

这是我的服务的代码:

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

javascript jasmine angular

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

错误:合并到主分支后缺少绑定“binding.node”

我尝试在 GitLab 的一个分支中的 CI/CD 中配置自动代码覆盖率,并且管道在分支内完美通过,但是当管理员将更改合并到主分支时,管道由于缺少绑定而失败。

我曾经gitlab-ci.yml在其中配置我的作业。我没有任何使用管道的经验,所以这对我来说几乎是一个反复试验的任务。

最后,我得到了对我有用的配置,它不会破坏任何东西并根据需要生成覆盖范围。但是,由于它在成功构建之前显示无空间错误,因此我不得不强制清除缓存以使作业正常运行。在我的分支中,管道通过而没有任何错误,我通过多次重新运行来进行双重检查。但是一旦管理员合并了分支,它突然开始产生以下错误:

ERROR in Module build failed: Error: Missing binding /builds/internal/employee_portal/node_modules/node-sass/vendor/linux-x64-64/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 10.x

Found bindings for the following environments:
  - Linux 64-bit with Node.js 11.x

This usually happens because your environment has changed since running `npm install`.
Run `npm rebuild node-sass` to download the binding for your current environment.
    at module.exports (/builds/internal/employee_portal/node_modules/node-sass/lib/binding.js:15:13)
    at Object.<anonymous> (/builds/internal/employee_portal/node_modules/node-sass/lib/index.js:14:35)
    at Module._compile …
Run Code Online (Sandbox Code Playgroud)

continuous-integration pipeline continuous-deployment gitlab docker

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