小编Qwe*_*tiy的帖子

什么是Angular 2中的`change`事件

changeAngular 2中的活动是什么?什么时候发送,我该如何使用它?
I. e.我通过以下代码订阅了(change)="update()"什么?

http://plnkr.co/edit/mfoToOSLU6IU2zr0A8OB?p=preview

import {Component, View, Input, Output, EventEmitter, OnChanges} from '@angular/core'

@Component({
  selector: 'inner-component',
  template: `
    <label><input type="checkbox" [(ngModel)]="data.isSelected"> Selected</label>
  `
})
export class InnerComponent {
  data = { isSelected: false };
}

@Component({
  selector: 'my-app',
  template: `
    <p><inner-component (change)="update()"></inner-component></p>
    <p>The component was updated {{count}} times</p>
  `,
  directives: [InnerComponent]
})
export class AppComponent {
  count = 0;

  update() {
    ++this.count;
  }
}
Run Code Online (Sandbox Code Playgroud)

PS:俄语同样的问题.

typescript angular

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

是否可以检测导致页面重新加载的操作?

未知的脚本操作(可能是异步)会导致页面重新加载.

如何在代码中找到此操作?

至少,有没有办法在访问时设置断点window.location
但我不确定以这种方式强制导航.

事实上,我需要一种在任何一个浏览器中工作的方式,因为页面重新加载任何一个.

PS:俄语同样的问题.

javascript debugging developer-tools google-chrome-devtools

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

为什么浏览器会获得两次Symbol.unscopables?

with(new Proxy({}, {
  has() { return true },
  get(obj, key, proxy) { return console.log(String(key)) } })
) {
  a--
}
Run Code Online (Sandbox Code Playgroud)

Chrome中的输出:

Symbol(Symbol.unscopables)
a
Symbol(Symbol.unscopables)
Run Code Online (Sandbox Code Playgroud)

Firefox中的输出:

Symbol(Symbol.unscopables)
Symbol(Symbol.unscopables)
a
Run Code Online (Sandbox Code Playgroud)

据我所知,一个人获得与阅读价值相关 - 另一个 - 分配.

a--应该写入a读取的同一个地方是合乎逻辑的.不,这不对.

但是Symbol.unscopables两次获得价值提示我们,可以传递一个对象进行阅读,另一个对象进行写作.

它真的意味着像那样工作吗?规范说什么?

实际上,它几乎可以在Chrome和FF中运行 - 它可以从一个对象读取并写入另一个对象,但它会导致不同的结果:

更新:Safari 10只读取一次.

var a, b, flag = true

with (a = { x: 7 })
  with (b = { x: 4, get [Symbol.unscopables]() { return { x: flag=!flag } } })
    x++

                 // Chrome   FF …
Run Code Online (Sandbox Code Playgroud)

javascript with-statement ecmascript-6

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

打字稿中的可变参数

我想将任意数量的不同类型的参数传递给一个函数并使用这些类型。它看起来如下

function f<A>(a: A): A;
function f<A, B>(a: A, b: B): A & B;
function f<A, B, C>(a: A, b: B, c: C): A & B & C;
function f<A, B, C, D>(a: A, b: B, c: C, d: D): A & B & C & D;

function f(...args: any[]) {
    return Object.assign({}, ...args);
}

var smth = f({ x: 1 }, { y: 2 }, { z: 3 });
var res = smth.x + smth.y + smth.z; …
Run Code Online (Sandbox Code Playgroud)

typescript

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

如何防止 fscanf 将 0x2 解释为十六进制?

我有一个文件存储诸如2.32x7. 我使用以下方法读取浮点部分:

fscanf(file, "%lf", &value);
Run Code Online (Sandbox Code Playgroud)

它工作得很好......除了当文件存储类似0x2. 在这种情况下,它将整个字符串读取为十六进制值。

我怎样才能防止这种情况发生?我希望 fscanf 只读取0并忽略x2.

编辑: 根据@dbush的建议,我添加了一个示例输入文件。

我正在解析多项式。因此,输入文件将类似于:

0x2+2.32x7-4x-9
Run Code Online (Sandbox Code Playgroud)

可运行的示例。

c scanf

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

隐藏chrome中的一些devtools选项卡

如何在Chorme devtools中隐藏以下标签?

我知道我可以对它们进行重新排序,但我希望尽量减少额外的接口部分以进行某些竞争.

截图

javascript google-chrome google-chrome-devtools

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

为什么布尔值变为真?

看看下面的代码:

export class Smth {
  private flag: boolean;

  public update() {
    this.flag = true;

    this.inner();

    if (this.flag === false) { // Operator '===' cannot be applied to types 'true' and 'false'.
      console.log(123);
    }
  }

  private inner() {
    this.flag = false;
  }
}
Run Code Online (Sandbox Code Playgroud)

我无法理解这条线有什么问题

if (this.flag === false)
Run Code Online (Sandbox Code Playgroud)

打字稿说

运算符'==='不能应用于类型'true'和'false'.

但实际上有booleanfalse.

我正在使用typescript 2.6.2但是在线游乐场用2.7显示相同的结果.


它不是运算符''='的公开,不能应用于Typescript 2中的类型x和y,因为该问题是关于比较常量.但在我的代码中,它是一个可查询的类字段,并且有一个函数可以更改值.而且,它被称为.

this.flag = true;

this.inner(); // exectues this.flag = false;

if (this.flag === false) { // ... …
Run Code Online (Sandbox Code Playgroud)

typescript

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

具有固定长度的元组

元组中的Typescript允许添加以前使用过的任何类型的额外元素,但我想限制长度.我试过了& { length: 2 },但没有帮助:

declare var a: [string, number] & { length: 2 };

a[0] = "1"
a[1] = 2;
a[2] = "3";
a[3] = 4;
Run Code Online (Sandbox Code Playgroud)

分配[2][3]不产生错误.如何指定相应的类型?

arrays tuples typescript

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

重试后怎么抓?

我想get在发生错误时再次尝试重试请求几次,但如果所有尝试都失败,则执行错误处理程序.

以下代码重试请求,但catch永远不会执行.我该如何解决?

import {Response, Http} from '@angular/http';
import {Observable} from 'rxjs/Rx';
import 'rxjs/add/operator/catch';
import 'rxjs/add/operator/map';
Run Code Online (Sandbox Code Playgroud)
this.http.get("/api/getData").map(data => {
  console.log('get')
  return data.json()
})
.retryWhen(err => {
  console.log('retry')
  return err.delay(1000).take(5)
})
.catch(err => {
  console.log('catch')
  this.handleHttpError(err)
  return err
})
.subscribe(data => {
  console.log('subscribe')
  console.log(data)
})
Run Code Online (Sandbox Code Playgroud)

javascript observable rxjs angular

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

如何从 fs.Dirent 获取类型?

我可以打电话

fs.readdirSync("C:\\", { withFileTypes: true })
Run Code Online (Sandbox Code Playgroud)

并获得数组fs.Dirent,但它们看起来像

> fs.readdirSync("C:\\", { withFileTypes: true })[32]
Dirent { name: 'Windows', [Symbol(type)]: 2 }
> fs.readdirSync("C:\\", { withFileTypes: true })[21]
Dirent { name: 'pagefile.sys', [Symbol(type)]: 1 }
> fs.readdirSync("C:\\", { withFileTypes: true })[10]
Dirent { name: 'Documents and Settings', [Symbol(type)]: 3 }
Run Code Online (Sandbox Code Playgroud)

所以有一个名称和类型,但类型隐藏在 Symbol(type) 下,我找不到任何信息如何从那里获取它。

当然,我可以使用像

> x = fs.readdirSync("C:\\", { withFileTypes: true })[10]
Dirent { name: 'DoYourData iCloud Backup', [Symbol(type)]: 2 }
> x[Object.getOwnPropertySymbols(x)[0]]
3
Run Code Online (Sandbox Code Playgroud)

但这似乎很奇怪。

如果它是出于目的而隐藏的,并且除了名称之外没有任何公共内容,那么我不明白为什么我们在选项中使用特殊标志来获取对象而不是简单的字符串。

截屏

javascript fs node.js

6
推荐指数
2
解决办法
1898
查看次数