小编Str*_*der的帖子

升级到 Angular 10 - 修复 CommonJS 或 AMD 依赖项可能导致优化救助

我正在尝试将我的 angular 9 应用程序升级到 angular 10 版本,但在升级后低于警告

rxjs\BehaviorSubject.js depends on rxjs-compat/BehaviorSubject
Run Code Online (Sandbox Code Playgroud)

知道如何解决这个问题吗?

javascript rxjs angular-upgrade angular rxjs6

89
推荐指数
7
解决办法
10万
查看次数

声明具有泛型类型的组件

是否可以在Angular 4中声明具有泛型类型的组件?

以下代码导致生成错误:

export class MyGenericComponent<T> implements OnInit {
    @Input()  data: BehaviorSubject<T[]>;

    //...
}
Run Code Online (Sandbox Code Playgroud)

执行时的错误ng serve是:

ERROR in C:/.../my-generic.module.ts (5,10): Module '"C:/.../my-generic.component"' has no exported member 'MyGenericComponent'.
Run Code Online (Sandbox Code Playgroud)

例:

以下示例是尝试实现通用数据表,其中@Input() data从一个组件"调用此组件"到另一个组件的更改.现在的问题是可以BehaviorSubject<any[]>被改变到BehaviorSubject<T[]>哪里T会是泛型类型传递到组件?

@Component({
  selector: 'my-data-list',
  templateUrl: './data-list.component.html',
  styleUrls: ['./data-list.component.css']
})
export class DataListComponent implements OnInit {
  @Input()  data: BehaviorSubject<any[]>;
  @Output() onLoaded = new EventEmitter<boolean>();

  private tableDataBase : TableDataBase = new TableDataBase();
  private dataSource : TableDataSource | null;

  constructor() { }

  ngOnInit() { …
Run Code Online (Sandbox Code Playgroud)

typescript typescript-generics angular-components angular

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

如何在Mongoose中增加Number值?

StackOverflow的人,我正在讨论这个问题,如何增加
Mongoose中的Number值?我已经尝试了下面的代码,虽然它不起作用.我试图在提交表单时将值增加1.以下是我的代码:

app.post('/like', function (req, res) {
    var id = req.body.id;
    var query = {_id: id};
    var post = Meme.findOne(query);
    Meme.findOneAndUpdate(post, post.likes: post.likes+1)
});
Run Code Online (Sandbox Code Playgroud)

非常感谢您的宝贵帮助!

mongoose mongodb node.js

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

如何在移动应用程序环境中处理 JWT 刷新令牌

我正在具有单独后端服务器的客户端移动应用程序中实现 JWT,并且我正在寻找一种使用刷新令牌的最佳方法,无需太多服务器调用,同时保持良好的用户体验。

我是实现这种机制的新手,我对很多事情感到困惑,所以我真正寻找的是一个可靠的概念解决方案来保护用户对应用程序的访问,并让他同时无限期地登录。

如有任何更正或建议,我们将非常欢迎:

  • 为什么还要刷新令牌?

    单独使用 JWT 访问令牌可能会危及用户安全:如果攻击者持有访问令牌,他可以随时运行功能请求。即使对访问令牌应用了到期日期,如果服务器在旧访问令牌到期时发出新的访问令牌,攻击者也将使用旧的访问令牌接收新的访问令牌,并继续访问用户功能。

    一旦用户使用其登录名/密码重新获得对其帐户的访问权限,刷新令牌即可阻止攻击者:当用户使用应用程序且服务器检测到其刷新令牌无效时,他将被注销,并会生成新的刷新令牌和访问令牌在他使用凭据登录后发出。攻击者将无法使用旧令牌。

    我的第一个问题是:

    I. 无论攻击者如何从用户环境获取令牌,只要用户仍处于非活动状态并且没有使用其凭据再次登录以创建新令牌,他是否能够无限期地使用它们?

  • 当令牌异步刷新时怎么办?

    让我们想象一个场景,其中用户位于应用程序内部,并且至少有两个服务器调用异步运行:

    • accessToken1“Service1”使用过期的和 a进行服务器调用refreshToken1,服务器通过发送新的accessToken2refreshToken2
    • 在收到“Service1”响应之前,“Service2”使用 和 进行另一个服务器调用accessToken1refreshToken1服务器refreshToken1与之前保存的进行比较refreshToken2,发现它们不同。然后它会做出响应Invalid refresh token,这会导致用户被注销!

    为了避免此问题并保持用户登录状态,可以有一个集中式身份验证服务,该服务在进行任何服务器调用之前首先检查令牌的有效性。这意味着除非身份验证服务空闲,否则不会执行任何调用,或者等待新令牌(如果已加载)。

    我的第二个问题是:

    二. 使用这样的服务来避免异步刷新令牌问题意味着到服务器的往返次数更多,这可能会导致成本高昂。有更好的解决方案吗?

security authentication optimization jwt

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

Javascript中三点运算符的含义是什么?

我看到rubix代码

http://wrapbootstrap.com/preview/WB09498FH(网站点击演示点击)

它是反应组件中的代码

javascript

//react ES6
var InboxItem = React.createClass({
  mixins: [State, Navigation],
  statics: {
    ID: 0,
    resetID: function() {
      InboxItem.ID = 0;
    },
    getID: function() {
      return ++InboxItem.ID;
    }
  },
  handleClick: function(e) {
    e.preventDefault();
    e.stopPropagation();
    this.transitionTo('/app/mailbox/mail');
  },
  render: function() {
    var classes = classNames({
      'inbox-item': true,
      'unread': this.props.unread
    });

    var props = {
      href: '/app/mailbox/mail',
      onClick: this.handleClick,
      ...this.props,
      className: classes
    };

    return (
      <a {...props}>
        <div className='inbox-avatar'>
          <img src={this.props.src} width='40' height='40' className={this.props.imgClass + ' hidden-xs'} />
          <div className='inbox-avatar-name'> …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs

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

Java - 实现数组的深层和浅层副本

我试图理解Java中浅层和深层复制的概念.关于这个主题有很多文章和问答,但每当我尝试在真正的Java代码中实现这些概念时,我都不清楚一切.

我基于理解的答案之一就是在这个链接中,通过模式解释深度和浅层复制.

我会在每个案例的实施情况下向您展示:

  • 浅拷贝:

我在我的示例中使用了System.arraycopy()方法,因为我在许多文章中读到它执行浅拷贝(以及克隆方法)

public class Test {

    public static void main(String[] args) {
        NameValue[] instance1 = {
                new NameValue("name1", 1),
                new NameValue("name2", 2),
                new NameValue("name3", 3),
        };
        NameValue[] instance2 = new NameValue[instance1.length];

        // Print initial state
        System.out.println("Arrays before shallow copy:");
        System.out.println("Instance 1: " + Arrays.toString(instance1));
        System.out.println("Instance 2: " + Arrays.toString(instance2));

        // Perform shallow copy
        System.arraycopy(instance1, 0, instance2, 0, 3);

        // Change instance 1
        for (int i = 0; i < 3; i++) …
Run Code Online (Sandbox Code Playgroud)

java arrays deep-copy shallow-copy

8
推荐指数
2
解决办法
1366
查看次数

Angular2 - 无法绑定到'ngSwitchCase',因为它不是已知的本机属性

我在我的.html文件中有两个列表.我试图让我的代码不重复所以我决定使用ngSwitch,但是当我做下一件事时我得到一个错误:

<div [ngSwitch]="currentListView">
    <div *ngSwitchCase="'People'">
      <div dnd-sortable-container [dropZones]="['zone-one']" [sortableData]="listOfPeople">
        <div class="list-bg" *ngFor="#person of listOfPeople; #i = index" dnd-sortable [sortableIndex]="i">
          ID: {{bulk.person}} <p></p> Name: {{person.name}}
        </div>
      </div>
    </div>
    <div *ngSwitchCase="'Cars'">
      <div dnd-sortable-container [dropZones]="['zone-one']" [sortableData]="listOfCars">
        <div class="list-bg" *ngFor="#car of listOfCars; #i = index" dnd-sortable [sortableIndex]="i">
          ID: {{car.id}} <p></p> Color: {{car.color}}
        </div>
      </div>
    </div>
Run Code Online (Sandbox Code Playgroud)

这是ECH列表的错误:

(承诺中):模板解析错误:无法绑定到'ngSwitchCase',因为它不是已知的本机属性("

<div [ngSwitch]="currentListView">
    <div [ERROR ->]*ngSwitchCase="'People'">
      <div dnd-sortable-container [dropZones]="['zone-one']" [sortableData"): AppCmp@42:9
Property binding ngSwitchCase not used by any directive on an embedded template (" …
Run Code Online (Sandbox Code Playgroud)

typescript angular

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

将一个 Angular 应用程序连接到多个 Apollo 客户端

按照Apollo Angular docs,我应用此配置连接到给定的 graphql 端点:

import { HttpClientModule } from "@angular/common/http";
import { ApolloModule, APOLLO_OPTIONS } from "apollo-angular";
import { HttpLinkModule, HttpLink } from "apollo-angular-link-http";
import { InMemoryCache } from "apollo-cache-inmemory";

@NgModule({
  imports: [
    BrowserModule,
    HttpClientModule,
    ApolloModule,
    HttpLinkModule
  ],
  providers: [{
    provide: APOLLO_OPTIONS,
    useFactory: (httpLink: HttpLink) => {
      return {
        cache: new InMemoryCache(),
        link: httpLink.create({
          uri: "https://my.endpoint.io/graphql"
        })
      }
    },
    deps: [HttpLink]
  }],
})
export class AppModule {}

Run Code Online (Sandbox Code Playgroud)

是否可以使用相同的配置连接到另一个 graphql 端点?

本节中展示了如何使用多个客户端的文档,但我不知道怎样才能用它申请apollo-angular-link-http

谢谢。

apollo-client angular apollo-angular

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

使用变量加载外部图像源

我无法使用 url 变量加载外部图像。问题是 Angular 自动完成 url 以添加localhost:3000/到 url 的开头。

这是我的组件:

import { Component, Input, OnInit } from '@angular/core';
import { Cite } from './cite';
import { Engin } from './engin';
import { Station } from './station';
import { EnginService } from './engin.service';

@Component({
    moduleId: module.id,
    selector: 'my-engin-detail',
    template: `
    {{imgUrl}}
    <img [src]= "imgUrl" width="42" height="42" />
    `,
     styles: [`
     `]
 })
 export class EnginDetailComponent implements OnInit {
     constructor(private enginService: EnginService) {

     }
     @Input()
     engin: Engin;
     imgUrl: string;
     ngOnInit(): …
Run Code Online (Sandbox Code Playgroud)

image angular

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

将本地开发的模块打包/导入到项目中

我正在尝试将本地开发的Angular项目/模块导入到angular应用程序中,而不将其发布到npm存储库中。

首先,我按照本教程以UMD格式构建模块(我跳过了发布部分):

https://medium.com/@cyrilletuzi/how-to-build-and-publish-an-angular-module-7ad19c0b4464

然后,我尝试通过执行以下命令行在最终应用程序中安装模块:

npm install ../path-to-my-module --save
Run Code Online (Sandbox Code Playgroud)

这成功添加我的模块,@myscope/myModulepackage.json我的应用程序,但问题是,在应用程序模块的进口无法识别。我最终收到以下错误:

Cannot find module @myscope/myModule
Run Code Online (Sandbox Code Playgroud)

在my中node_modules@myscope创建了文件夹,并且在其中有一个../path-to-my-module名为的快捷方式myModule

问题的根源是否在于捷径?如果可以的话如何解决?

npm angular-module angular-cli angular ng-packagr

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