小编san*_*han的帖子

如何在Angular中的Document对象上侦听mousemove事件

我正在将拖动功能实现为一个角度应用程序:http://jsfiddle.net/Jjgmz/1/

部分原因是监听mousemove文档对象上的事件.

$(document).mousemove(function(e) {});
Run Code Online (Sandbox Code Playgroud)

如何在组件内部监听文档对象?

让我们假装这是component.html文件的内容:

<div id="box"></div>
Run Code Online (Sandbox Code Playgroud)

我正在使用Angular 4.

angular

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

使用UIBezierPath:byRoundingCorners:使用Swift 2和Swift 3

我正在使用此代码使按钮的两个角变圆.

let buttonPath = UIBezierPath(roundedRect: button.bounds,
                              byRoundingCorners: .TopLeft | .BottomLeft, 
                              cornerRadii: CGSizeMake(1.0, 1.0))
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误:

二元运算符'|' 不能应用于两个UIRectCorner操作数.

如何在Swift 2.0中使用此方法?

rounded-corners ios uibezierpath swift

20
推荐指数
2
解决办法
7713
查看次数

将#element 绑定到使用 *ngFor 创建的元素

我正在使用 *ngFor 创建一堆 div。我想把手放在其中一个上并获得它的宽度。

.html
<div #elReference *ngFor="let el of elements> HEHE </div>

.ts
  @ViewChild("elReference") elReference: ElementRef;
Run Code Online (Sandbox Code Playgroud)

显然,您不能将 ViewChild 与 *ngFor 一起使用,因为它elReference仍未定义。

你如何获得使用 *ngFor 创建的元素引用?

viewchild angular

12
推荐指数
2
解决办法
5847
查看次数

变换比例对于奇数像素宽度不正确

我试图缩放div,但保持内部元素在相同的位置相同的大小.为此,我使用transform: scale(value)包装器和transform: scale(1/value)内部div.

问题是,当我改变比例时,内部div会发生变化.只有当包装纸的宽度/高度为奇数或不是整数时才会发生这种情况.对于包装器的均匀宽度/高度不会发生这种情况.

我的目标是让许多包装器的子元素与包装器一起缩放,但只有一个不包装.

看看这个例子,看看行动中的问题(悬停到比例).

示例没有问题,内部元素保持固定(容器的高度和宽度均匀):

https://jsfiddle.net/o16rau6u/5/

.wrapper {
  width: 200px;
  height: 200px;
  background-color: blue;
  position: relative;
}

.bg {
  width: 20px;
  height: 20px;
  display: inline-block;
  position: absolute;
  top: 50%;
  left: 50%;
  margin-top: -10px;
  margin-left: -10px;
  background-image: url("https://upload.wikimedia.org/wikipedia/commons/thumb/f/f9/Wiktionary_small.svg/350px-Wiktionary_small.svg.png");
  background-size: 100% 100%;
  background-repeat: no-repeat;
}

.wrapper:hover {
  transform: scale(2);
}

.wrapper:hover .bg {
  transform: scale(0.5);
}
Run Code Online (Sandbox Code Playgroud)
<div id="wrapper" class="wrapper">
  <div id="bg" class="bg"></div>
</div>
Run Code Online (Sandbox Code Playgroud)

问题的例子,内部元素在比例上移动一点(容器的高度和宽度是奇数):

https://jsfiddle.net/o16rau6u/6/

html css css3 scaletransform css-transforms

9
推荐指数
2
解决办法
2118
查看次数

将 esm 模块与 ts-node 一起使用

我成功地将ts-node其转换为 CommonJS 模块。我用的是官方的:docs

我还想按照官方esm 文档使用 esm 模块,但不幸的是没有成功。我不断收到的错误是:CustomError: Cannot find module '/module/next/to/index/ts/ModuleName' imported from /Users/mainuser/angular_apps/typescript_test/index.ts

这是tsconfig.json

{
    "compilerOptions": {
      "target": "ES2015",                                 
      "module": "ES2020",                               
      "esModuleInterop": true,                             
      "forceConsistentCasingInFileNames": true,            
      "strict": true,                                      
         "skipLibCheck": true                                
    },
    "ts-node": {
      "esm": true
    }
  }
  
Run Code Online (Sandbox Code Playgroud)

这是package.json的竞赛:

{
  "name": "typescript_test",
  "version": "1.0.0",
  "description": "",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1"
  },
  "author": "",
  "license": "ISC",
  "dependencies": {},
  "devDependencies": {
    "ts-node": "^10.7.0",
    "typescript": "^4.6.3"
  }, …
Run Code Online (Sandbox Code Playgroud)

node.js typescript ts-node

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

使用 Gmail API 发送邮件时设置发件人姓名和姓氏

通过 gmail API 发送邮件时如何设置发件人姓名和姓氏?

我使用这个代码:https : //github.com/chris-brown-nz/python-gmail-api

代码很棒,我成功发送了邮件。但是,发件人的姓名只是@sign留下的文本。示例:如果John Travisjohnhomeboy@gmail.com接收方显示的姓名发送电子邮件,则将是johnhomeboy,而不是John Travis。我需要设置什么属性才能发送带有我的名字和姓氏的电子邮件?

python email gmail gmail-api

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

在 Rider Debugger 模式下,某些变量在当前上下文中不存在

我正在尝试检查局部变量的值。此功能适用于某些变量。对于那些没有的人,Rider 会提出一个错误:

The name `variable_name` does not exists in the current context.
Run Code Online (Sandbox Code Playgroud)

代码和调试器观察错误的图像示例:

在此输入图像描述 在此输入图像描述

这是反编译的代码,但即使在这里它也适用于某些局部变量。有什么办法可以解决这个问题?

我已经检查过Settings->Build, Execution, Deployment->Disable JIT optimization on module load (.NET/.NET Core only),但正如它所说,它仅适用于 .NET/.NET Core 模块

c# rider

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

ng 服务错误:getaddrinfo ENOTFOUND localhost

我收到此错误:

getaddrinfo ENOTFOUND localhost
Error: getaddrinfo ENOTFOUND localhost
    at errnoException (dns.js:28:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:76:26)
Run Code Online (Sandbox Code Playgroud)

运行时ng serve。在 Web 查找之后,此问题的建议答案是运行以​​下命令:

ng serve --port 4200 --host 0.0.0.0
Run Code Online (Sandbox Code Playgroud)

不幸的是,指示没有解释。

这有效并且成功编译了 Angular 项目。我不知道为什么。有人能解释一下为什么会这样,以及背景中发生了什么吗?谢谢

angular

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

在Angular应用程序中进行代理时出现504(网关超时)错误

我正在尝试设置角度应用程序以使用2个不同的本地主机.

backend在项目根目录中创建了一个文件夹,并echo.php在其中添加了文件.在项目根目录中,我还创建了proxy.conf.json,其中包含以下内容:

{
  "/backend/**": {
    "target": "http://localhost:80",
    "secure": false

  }
}
Run Code Online (Sandbox Code Playgroud)

我尝试用以下方法获取echo.php:

  ngOnInit(){
    this.http.get('http://localhost:4200/backend/echo.php').subscribe(data => {
      console.log(data);      
    });
  }
Run Code Online (Sandbox Code Playgroud)

启动Angular应用程序:

ng serve --port 4200 --host 0.0.0.0 --proxy-config proxy.conf.json
Run Code Online (Sandbox Code Playgroud)

在浏览器控制台中,我得到了一个504 error Gateway Timeout.在终端中,错误听起来有点不同:

[HPM] Error occurred while trying to proxy request /backend/echo.php from localhost:4200 to http://localhost:80 (ENOTFOUND)
Run Code Online (Sandbox Code Playgroud)

我不知道我做错了什么.你能为我指出正确的方向吗?我可以使用以下URL直接访问非角度(在端口80上运行)服务器上的文件:http://localhost/backend/echo.php.

编辑:

echo.php:

<?php
echo "data from php";
Run Code Online (Sandbox Code Playgroud)

angular

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

Angular应用中的撤消重做功能

我正在考虑在有角度的应用程序中实现撤消,重做功能的方法。

第一个也是最基本的想法是使用一个完全描述应用程序内部的模型,称之为AppModel。对于每个值得记录的更改,您只需创建一个新对象AppModel并将其推入堆栈并更新currentIndex。

在绝对最坏的情况下,AppModel的对象必须填写500个文本字段,平均长度为20个字符。每次更新就是10000个字符或10kB。

这个数字有多糟?我不认为这是否会导致内存问题,但是否会使每次推送堆栈时应用程序冻结?这是一个基本的实现:

  historyStack: AppModel[];
  currentIndex:number = -1;

  push(newAppModel:AppModel){
    //delete all after current index
    this.historyStack.splice(++this.currentIndex, 0, newAppModel);
  }

  forward(){
    if(this.currentIndex < this.historyStack.length-1){
      this.currentIndex++;
      return this.historyStack[this.currentIndex];
    }
    return this.historyStack[this.currentIndex];
  }
  back(){
    return this.historyStack[this.currentIndex--];
  }
Run Code Online (Sandbox Code Playgroud)

我想到的另一种选择是存储执行redoreverse操作的函数调用。这种方法将需要我还存储哪些对象需要调用函数。用户可能会删除这些对象,因此还必须有一种重新创建对象的方法。当我输入时,这变得很痛苦:)

您推荐什么方式?

undo-redo angular

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