小编Har*_*vic的帖子

从Angular 2组件调用纯javascript函数

我有一个文件,有几十个javascript函数.我想要做的是将该文件导入Angular 2组件并运行在"external.js"文件中定义的init()函数.

import { Component, AfterViewInit } from '@angular/core';

import "../../../../assets/external.js";

@Component({
    selector: 'app-component',
    templateUrl: 'app.component.html'
})
export class ComponentNameComponent implements AfterViewInit {
    constructor() { }

    ngAfterViewInit(): void {
      // invoke init() function from external.js file
    }
}
Run Code Online (Sandbox Code Playgroud)

external.js使用import和ngAfterViewInit()加载我想调用external.js中的init()函数,该函数调用该外部文件中的所有其他方法.

这是external.js的一部分:

function init() {
  callFunction1();
  callFunction2();
}
Run Code Online (Sandbox Code Playgroud)

javascript angular

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

Mongo为两个或多个字段的条目查找重复项

我有这样的文件:

{
    "_id" : ObjectId("557eaf444ba222d545c3dffc"),
    "foreing" : ObjectId("538726124ba2222c0c0248ae"),
    "value" : "test",
}
Run Code Online (Sandbox Code Playgroud)

我想找到已复制的值对所有文件foreingvalue.

mongodb mongodb-query aggregation-framework

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

在 @NgModule 装饰器中调用函数

我正在研究如何调用 @NgModule 装饰器内的函数。

出于我的目的,我希望能够调用内置于角度核心中的 isDevMode() 函数。

因此,在 @NgModule 中,我尝试根据该导入或非特定模块进行条件检查,我是处于开发模式还是生产模式。

解决方法可以是简单地将生产标志添加到环境文件中,但在我的情况下它不应该工作。

原因是因为对于某些环境,我希望能够动态地将生产标志设置为 true 或 false。因此, isDevMode() 函数已经基于 ng build 或 ngserve 期间传递的 --prod 标志来执行此操作,但问题是我无法执行以下操作:

@NgModule({
  imports: [
    ....
    isDevMode() : TestModule : []
    ....
]});
Run Code Online (Sandbox Code Playgroud)

如果我想获得符合 AOT 标准的应用程序,我会收到错误消息。

原因很明显,因为 NgModule 需要静态内容并且禁止函数调用,但我想知道是否有任何解决方法。

错误:

ERROR in app/app.module.ts(169,5): Error during template compile of 'AppModule'
  Function calls are not supported in decorators but 'isDevMode'
Run Code Online (Sandbox Code Playgroud)

angular

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

使用Object.assign将对象数组与对象合并

我正在尝试合并使用对象的对象数组 Object.assign()

var state = {
    items: [{
       id: "Harko",
       name: "Haris"
    },
    {
      id: "Benko",
      name: "Benjo"
    }]

}

var a = {
    id: "Benko",
    name: "Bengalka"
}
Run Code Online (Sandbox Code Playgroud)

我已经尝试过了:

Object.assign(state.items,a);
Object.assign({}, { items: [state.items,a]);
Run Code Online (Sandbox Code Playgroud)

我想得到的是以下内容:

{
    items: [{
       id: "Harko",
       name: "Haris"
    },
    {
      id: "Benko",
      name: "Bengalka"
    }]
}
Run Code Online (Sandbox Code Playgroud)

所以我希望var的状态中具有id"Benko"的对象被var a覆盖,因为它们具有相同的id.

Object.assign有可能吗?

任何形式的帮助将不胜感激.

谢谢

ecmascript-6

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

如何使SQLite与Angular 4 +,Electron和NodeJS一起使用

我正在尝试使用以下方法构建一个小型桌面应用:

  • Angular 4+
  • 的NodeJS
  • 电子
  • sqlite3的

NodeJS将用于扫描本地用户hdd并插入在SQLite3数据库中找到的特定文件.

我检查了几十个文档和建议.他们中的大多数建议使用NodeJS express框架并在Angular 4+ - > Express - > SQLite3之间创建图层.

我想避免使用快速框架,因为它将是桌面应用程序,根本不需要它.

我尝试了什么,我做了什么:

我安装了:

   "sqlite3": "^3.1.9",
   "node-pre-gyp": "^0.6.36",
Run Code Online (Sandbox Code Playgroud)

作为我项目中的依赖项.

如果您想使用本机nodejs库,我应该阅读,您应该运行电子重建.所以我也安装了电子重建:

"electron-rebuild": "^1.6.0"
Run Code Online (Sandbox Code Playgroud)

作为devDependencies并使用以下命令运行它:

./node_modules/.bin/electron-rebuild
Run Code Online (Sandbox Code Playgroud)

重建sqlite3成功完成.

比我运行电子申请,我得到以下错误:

/~/node-pre-gyp/lib/node-pre-gyp.js
Module build failed: Error: ENOENT: no such file or directory, open '/home/haris/development/walter/angular-electron-starter/node_modules/node-pre-gyp/lib/node-pre-gyp.js'
    at Error (native)
 @ ./~/sqlite3/lib/sqlite3.js 1:13-36
 @ ./src/app/home/home.component.ts
 @ ./src/app/home/index.ts
 @ ./src/app/app.module.ts
 @ ./src/app/index.ts
 @ ./src/main.browser.ts
 @ multi (webpack)-dev-server/client?http://localhost:3000 ./src/main.browser.ts
Run Code Online (Sandbox Code Playgroud)

我卡在这里 我尝试了更多的东西,比如:

1. Removing node_modules
2. npm install --build-from-source
Run Code Online (Sandbox Code Playgroud)

但我仍然得到同样的错误.

任何建议或帮助将非常感激.

node.js electron node-sqlite3 angular

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

未发现 Electron 应用程序 SQLITE 包安装

我们正在努力构建适用于 Windows 32 位和 64 位的应用程序。

\n\n

它是 Angular 2 应用程序,使用 sqlite3 作为数据库。

\n\n

开发中一切工作正常,但打包应用程序并在 Windows 上运行后,它会抛出错误

\n\n
SQLite package has not been found installed. Try to install it: npm install sqlite3 --save\n
Run Code Online (Sandbox Code Playgroud)\n\n

这是 package.json (其中一部分对于这个问题很重要):

\n\n
 "scripts": {\n    "build:aot:prod": "npm run clean:dist && npm run clean:aot && cross-env BUILD_AOT=1 npm run webpack -- --config config/webpack.prod.js  --progress --profile --bail",\n    "build:aot": "npm run build:aot:prod",\n    "build:dev": "npm run clean:dist && npm run webpack -- --config config/webpack.dev.js --progress --profile",\n    "build:docker": "npm run …
Run Code Online (Sandbox Code Playgroud)

electron electron-builder

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

按值排序,其中value在另一个集合中,ID存储在我们应用sort的集合中

我有下一个情况.

parameters集合中,我有一些文档,其中包含来自另一个集合的文档的groupsids.这就像引用另一个集合的FOREIGN键.

在另一个集合中,我们有与'_ids'对应的文档,这些文档存储在main parameters集合中.

以下是来自parameters集合的一个示例文档:

{
    "_id" : ObjectId("538726134ba2222c0c0248b6"),
    "name" : "Potta",
    "groups" : [ 
        "54c91b2c4ba222182e636943"
    ]
}
Run Code Online (Sandbox Code Playgroud)

我需要按组排序,但正如您在主要集合组中看到的,值是ID,但我想按组名排序.

这是一个来自groups集合的样本集合.

{
    "_id" : ObjectId("54c91b2c4ba222182e636943"),
    "name" : "Group 01",
}
Run Code Online (Sandbox Code Playgroud)

这可能在Mongo DB中实现吗?

谢谢

mongodb mongodb-query

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

在没有str_replace的情况下用下划线替换php字符串中的点

我有一个包含字符串的数组,其中一些字符串包含点('.').

我必须重复一遍.我不想用str_replace做这个.

所以,我需要用下划线替换那些点.

例如:

for($data as $key=>$value){
   print_r($value);
}
Run Code Online (Sandbox Code Playgroud)

让我们说输出如何:

'Hello. I have two dots. Please replace them!'
Run Code Online (Sandbox Code Playgroud)

我们希望得到的是:

'Hello_ I have two dots_ Please replace them!'
Run Code Online (Sandbox Code Playgroud)

提前致谢

php

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