我有这个 angular webapp,我想在模拟的 REST API 上运行 e2e 测试。我可以很容易地将我的网络请求存根到我的 REST API,但身份验证是使用第三方提供程序(使用放大的认知)。
现在我想删除包装身份验证的 Angular 服务。
在 Angular 我有
@Injectable({
providedIn: 'root'
})
export class AuthenticationService {
some methods
isSignedIn(): Observable<boolean> {
...
}
}
Run Code Online (Sandbox Code Playgroud)
我想存根isSignedIn()- 方法。我的第一次尝试看起来像这样:
import {AuthenticationService} from "../../src/app/authentication.service";
import {BehaviorSubject} from "rxjs";
context('albums', () => {
it('get albums', () => {
cy.stub(AuthenticationService,'isSignedIn').returns(new BehaviorSubject(true));
}
}
Run Code Online (Sandbox Code Playgroud)
Cypress/Chrome 然后抱怨它无法在该位置找到 AuthenticationService。我该如何解决这个问题。
在将 Angular Universal 添加到我们的应用程序时,我们必须initialNavigation="enabled"在路由器上设置标志,以避免闪烁。
现在这给我们带来了两个问题:
APP_INITIALIZERs 加载,所以无法加载受保护的路由,因为守卫总是假设用户未经授权,因为检查发生在APP_INITIALIZER我发现了几个与此相关的 Github 问题(即https://github.com/angular/universal/issues/1623),但没有一个真正提供了解决方案。
如何使用initialNavigation="enabled"while 同时等待APP_INITIALIZERs 执行?
编辑(01/02/2021):在 Angular 11 中,措辞已更改,该选项现在称为enabledBlocking。然而这里提到的问题并没有涉及到这一点。
我在Angular应用程序中使用ngx-translate进行翻译.它通过简单的项目设置工作得很好,但我们开发了一个大型业务应用程序,不同的组件被分成几个单独的库.
有些图书馆需要有一些翻译,当然,只需点击同一个按钮,即可对应用的所有部分进行翻译.
使用angular-librarian捆绑组件库到目前为止,我还没有成功为ngx-translate顶级Angular-Cli项目和包含的角度库管理库创建一个实例.
我一直在使用基本上各种输入组合的试了几个项目的设置ngx-translate与forRoot()和/或forChild()没有成功.我总是有一个缺少的提供者,文本出现但语言没有一起改变或根本没有.pp.
有谁拉过这个并且可以显示一个有效的项目设置示例/ plunkr?
我们开发了一个需要IE11支持的软件.由于多个源声明,IE11不支持async/await:
以及一些博客文章.
我们现在写了一个简单的Angular 5项目,该项目使用async/await,它在IE11中工作正常.我们可以安全地假设Angular在IE11中使用某种polyfill来增加对它的支持吗?我找不到任何来源说Angular增加对它的支持.
我们将无人机用于 CI 并在无人机内运行 Cypress 来测试我们的应用程序(Angular 7)。
所有测试在我的本地机器上运行良好,但在 CI 中,由于 Chrome 渲染器崩溃,测试失败。大约 50% 的失败,即使它们真的不长也不复杂(大多数只有大约 5-10 行)。
我知道这是一个已知问题 ( https://github.com/cypress-io/cypress/issues/350 ) 并花了相当多的时间尝试在线提出的各种修复程序。我已经尝试过:
该修复程序主要推广,设置--ipc=host目前不适用于无人机(https://discourse.drone.io/t/does-drone-support-ipc-host-option/1049)。
我实际上有点困惑,因为原始票证明确指出When running headlessly on very long and memory intense applications we are seeing renderer crashes with Docker.我很确定我们的应用程序既不符合条件very long也不符合条件memory intense(Chrome 任务管理器说页面消耗大约 50-80mb),所以也许我们的问题实际上是其他问题?
如果我在这里遗漏了一些东西,任何人都可以提供更多提示吗?
我正在使用Angular 5实现文件上传服务,我想向用户提供有关上传进度的反馈。我发现有几页建议使用reportProgressAngulars随附的参数HttpClient,但无法使其正常工作。
我对所有的HTTP请求都使用包装器类,然后该类进行一些逻辑处理,最后所有请求最终都以被调用的相同方法结束:
public request(request: HttpRequest<any>, options?: any): Observable<any> {
return this.httpClient.request(request.method, request.url, {
body: request.body,
headers: request.headers,
responseType: request.responseType,
...options
});
}
Run Code Online (Sandbox Code Playgroud)
然后,我使用{ reportProgress: true }as 传递一个上传(发布)调用options。这根本不起作用,对请求的任何更改都没有。因此,我怀疑我实际上需要reportProgress在HttpRequest构造函数中使用-parameter使其起作用,并相应地更改了我的代码:
public request(request: HttpRequest<any>, options?: any): Observable<any> {
return this.httpClient.request(
new HttpRequest(request.method, request.url, request.body, {
headers: request.headers,
responseType: request.responseType,
...options
})
);
}
Run Code Online (Sandbox Code Playgroud)
这导致了更奇怪的行为,现在无论我的选择是什么样,我始终只收到{type: 0}请求的响应。
我要监督什么?我使用Angular 5.1.1,现在我真的有点困惑。
因此,举一个明确的例子,现在我对这两个HttpRequest收到相同的响应:
{
"url":"http://127.0.0.1:8888/test",
"body":{
"data":"testdata"
},
"reportProgress":false,
"withCredentials":false,
"responseType":"json",
"method":"POST",
"headers":{ some-headers ... } …Run Code Online (Sandbox Code Playgroud) 我的页面上有一个srcset
<img src="bg__x-large.png" srcset="bg__small.png 900w, bg__med.png 1200w, bg__large.png 1920w">
Run Code Online (Sandbox Code Playgroud)
这是由视差脚本使用,现在只读取src属性
$(this).css('background-image', 'url(' + $(this).attr('src') + ')' );
Run Code Online (Sandbox Code Playgroud)
将其设置为背景图像.
如何使用jquery从srcset中读取正确的src?
我有一个接收数组的函数,但它们可以是不同的类型。根据我需要不同格式的类型:
public format(value: Foo[] | Bar[]) {
// this does not work
if (value instanceof Foo[]) ...
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以用来instanceof检查 Typescript 中是否有某个类的对象。
new Foo() instanceof Foo // true
Run Code Online (Sandbox Code Playgroud)
这也适用于检查我是否有数组。
new Array<Foo> instanceof Array // true
Run Code Online (Sandbox Code Playgroud)
但我无法检查我的数组是否实际上被输入到 Foo
new Array<Foo>() instanceof Array<Foo>
// The right-hand side of an 'instanceof' expression must be of type 'any'
// or of a type assignable to the 'Function' interface type.
Run Code Online (Sandbox Code Playgroud)
有没有办法显式检查数组值的类型?
如何*ngIf使用异步管道检查内部长度?
我尝试这样做,但它不起作用。正确的做法是什么?
<mat-menu #favoriteMenu="matMenu">
<ng-container *ngIf="items$ | async as items && items.length; else empty">
<button mat-menu-item *ngFor="let item of items">
...
</button>
</ng-container>
<ng-template #empty>no favorite here</ng-template>
</mat-menu>
Run Code Online (Sandbox Code Playgroud) angular ×7
cypress ×2
typescript ×2
angular-cli ×1
arrays ×1
async-await ×1
drone ×1
file-upload ×1
httprequest ×1
instanceof ×1
javascript ×1
jquery ×1