小编Ser*_*gey的帖子

Angular 8:装饰器不支持函数表达式

我在尝试在 Angular 8 中构建 prod 时遇到问题。错误是

ERROR in Error during template compile of 'AppModule'
  Function expressions are not supported in decorators in 'SocketLibModule'
    'SocketLibModule' references 'initializeApp'
      'initializeApp' contains the error at ../socket-lib/src/lib/socket-lib.module.ts(9,12)
        Consider changing the function expression into an exported function.
Run Code Online (Sandbox Code Playgroud)

什么指向我的库

export const SOCKET_CONFIG = new InjectionToken<SocketConfig>('SOCKET_CONFIG');

export function initializeApp(socketConfig: SocketConfig) {
  return (uriConfig: any) => {
    return () => uriConfig.load(socketConfig);
  };
}

@NgModule()
export class SocketLibModule {
  public static forRoot(socketConfig: SocketConfig): ModuleWithProviders {
    return {
      ngModule: SocketLibModule,
      providers: …
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

RxJs 动态 debounceTime 不是动态的

我创建了一个 Angular 指令,该指令应用于输入并以一些延迟(用于搜索)发出其值。

这个代码如下

@Directive({
    selector: '[search-field]'
})
export class SearchFieldDirective {
    @Input() searchFieldValueOutputDelay = 400;

    private _inputObservable$ = new Subject();

    @Output() searchValueUpdated = this._inputObservable$.asObservable().pipe(
        debounceTime(this.searchFieldValueOutputDelay),
        distinctUntilChanged(),
        tap(() => console.log('emit', this.searchFieldValueOutputDelay))
    );

    @HostListener('keyup', ['$event.target.value'])
    onChange(e) {
        console.log("change");
        this._inputObservable$.next(e);
    }
}
Run Code Online (Sandbox Code Playgroud)

问题是searchFieldValueOutputDelay它只在第一次使用,因此它的值为 400 而不是我在输入时提供的值。

<input (searchValueUpdated)="searchCard($event)" [searchFieldValueOutputDelay]="1000" type="search">

rxjs angular

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

找不到变量:样式表

我正在通过这个网站学习 React Native https://www.tutorialspoint.com/react_native/react_native_animations.htm

但是,当我尝试在 iPhone 上打开应用程序时出现问题。根据错误,它找不到变量,尽管它是导入的。

import React, { Component } from 'react';
import { View, LayoutAnimation, TouchableOpacity, Text, StyleSheet} from 'react-native';

export default class Animations extends Component {
  state = {
    myStyle: {
      height: 100,
      backgroundColor: 'red'
    }
  };
  expandElement = () => {
    LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
    this.setState({
      myStyle: {
        height: 400,
        backgroundColor: 'red'
      }
    })
  };
  collapseElement = () => {
    LayoutAnimation.configureNext(LayoutAnimation.Presets.linear);
    this.setState({
      myStyle: {
        height: 100,
        backgroundColor: 'red'
      }
    })
  };
  render() {
    return (
      <View>
        <View>
          <View …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs react-native

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

Angular 单元测试模拟 paramMap 获取

我有一个组件,它代表列表中的一个项目,并使用我来获取这个项目this.route.snapshot.paramMap.get('id')。我如何嘲笑这个?我试过了

providers: [
                {
                    provide: ActivatedRoute,
                    useValue: { snapshot: { params: convertToParamMap({ id: '1' }) } }
                }
            ]
Run Code Online (Sandbox Code Playgroud)

但这导致

类型错误:无法读取未定义的属性“get”

unit-testing karma-runner angular

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

开玩笑 Angular svg 模板

我的 Angular 9 应用程序中有几个组件,它们的模板在 svg 文件中定义,例如templateUrl: './eye.component.svg'.

\n

当我运行测试时出现错误

\n
\n

语法错误:意外的标记“<”

\n

Jest 遇到意外令牌

\n

这通常意味着您正在尝试导入 Jest 无法解析的文件,例如它不是纯 JavaScript。

\n

默认情况下,如果 Jest 看到 Babel 配置,它将使用它来转换您的文件,忽略“node_modules”。

\n

您可以执行以下操作:

\n
\xe2\x80\xa2 To have some of your "node_modules" files transformed, you can specify a custom "transformIgnorePatterns" in your config.\n\xe2\x80\xa2 If you need a custom transformation specify a "transform" option in your config.\n\xe2\x80\xa2 If you simply want to mock your non-JS modules (e.g. binary assets) you can stub them out with …
Run Code Online (Sandbox Code Playgroud)

svg jestjs angular

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

Facebook 社交名流从令牌和秘密中获取用户

在 laravel 文档中,有一部分是关于让用户停止使用的->userFromTokenAndSecret,但它似乎不适用于 facebook,并返回一个错误,表明该方法不存在。

如何通过令牌和秘密获取用户?

我使用 Laravel 作为 API,以便它无状态地工作,并且我不使用任何重定向。
我使用 Angular 应用程序登录并发送令牌。我需要处理这个。

php facebook laravel dingo-api laravel-socialite

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

Angular Karma 不捕获浏览器

我在 Angular 6 上有一个现有项目,其中测试未运行。它是如何发生的:在 PhpStorm 中,我按下文件上的上下文菜单run file.specs.ts

它开始测试,打开浏览器,然后什么也没发生。这是日志

Waiting for a captured browser... To capture a browser open http://localhost:9876/
14 10 2018 13:04:17.500:WARN [launcher]: Chrome have not captured in 60000 ms, killing.
14 10 2018 13:04:17.799:INFO [launcher]: Trying to start Chrome again (1/2).
14 10 2018 13:05:17.808:WARN [launcher]: Chrome have not captured in 60000 ms, killing.
14 10 2018 13:05:18.055:INFO [launcher]: Trying to start Chrome again (2/2).
14 10 2018 13:06:18.062:WARN [launcher]: Chrome have not captured in 60000 …
Run Code Online (Sandbox Code Playgroud)

typescript karma-runner angular

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

Angular FormControl检查(如果需要)

有没有办法检查是否需要控制?

当我实现它接受一个专用表单字段部件的问题出现FormControl,并不仅input也验证错误。由于某些字段是必填字段,因此最好让用户知道是否需要*

有没有一种方法来检查@Input() control: FormControlValidators.required,并显示一个星号?

validation form-control reactive-forms angular

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

Angular 8:使用库构建 monorepo 应用程序的更好方法

我的 Angular monorepo 项目中有几个应用程序。我还编写了大约 5 个库以在应用程序中使用。

我想知道的是如何更好地构建/架构这些库

ins如下:

  1. 库仅供内部使用(意味着不能在其他应用程序中发布或使用,只能在projects文件夹中使用)
  2. 库具有不同的依赖项,例如lodashRxJs
  3. 一个库可以在其内部导入另一个库

到目前为止我所做的:

  1. 指定的umdModuleIds每个库的ng-package.json
  2. peerDependencies在外部库上指定,例如lodashRxJs
  3. 设置我的应用程序构建,其中包含通过“&&”组合的prebuild大约 5 个命令ng build lib-name
  4. 我以下一种方式导入 Lodash import { cloneDeep } from 'lodash'

现在我看到我的main.js块比将一些服务/组件/功能提取到外部库之前大得多。现在main.jsprod build 的大小是 2.1 Mb,在我看来这太大了。

另外,我不确定是否值得为每个库(UMD、FESM2015、FESM5)制作 3 个不同的版本。

我从 dist 文件夹中导入库,因为它在文档中推荐的遵循下一个表单import { LibService } from 'lib'

angular-cli monorepo angular ng-packagr

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

量角器测试重定向

我有一个想要测试的 Angular 应用程序。它有登录部分,我需要以某种方式知道它是否工作正常(它发送登录数据,打开套接字连接,重定向到应用程序深度,并且路由防护没有阻止该重定向)。

我试过了

import { AppPage } from './app.po';
import { browser, by, element, until } from "protractor";
import urlContains = until.urlContains;
Run Code Online (Sandbox Code Playgroud)

...

it('should log in', () => {
        page.navigateTo();
        page.fillInputs();
        page.logIn();

        browser.waitForAngular();
        browser.wait(() => {
            return urlContains('dashboard');
        }, 2000);
    });
Run Code Online (Sandbox Code Playgroud)

即使我用不正确的数据填充字段并且应用程序不执行任何重定向,它也会成功。如何实现此重定向等待然后检查网址?

如果重要的话我会使用 Angular 6。

是的,我见过类似的主题,但我不明白答案。

testing protractor angular

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

角度测试私有方法

我构建了一种队列管理器,它与 RxJs 可观察对象一起工作并一一执行它们。现在我想测试这个,但是我想测试的所有方法都是私有的。

公共接口只有两个方法来创建可观察对象并将其添加到队列管理器。

如果我尝试进行类似spyOn(myService, 'privateMethod')PhpStorm 的分析,则表明它不可分配给类型(并且引用公共方法)。

我无法将其提取到公开的内容中,因为这是一个复杂的逻辑,不应该从外部中断。

testing unit-testing jasmine typescript angular

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