小编ova*_*gle的帖子

输入属性更改时,ngOnChanges不会触发

当在angular2中改变组件属性时,你能以编程方式触发角度变化检测吗?

@Component({
   selector: 'my-component', 
})
class MyComponent implements OnChanges {
   @Input() message: string;

   ngOnChanges(changeRecord) {
      for (var change in changeRecord) {
         console.log('changed: ' + change);
      }
   }

   doSomething() {
     // I want ngOnChanges to be called some time after I set the 
     // message. Currently it is only called if the host element
     // changes the value of [message] on the element.
     this.message = 'some important stuff';
   }
}
Run Code Online (Sandbox Code Playgroud)

angular

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

确定用户是否在阴影dom外部单击

我正在尝试实现一个下拉菜单,你可以点击外面关闭.下拉列表是自定义日期输入的一部分,并封装在输入的shadow DOM中.

我想写一些类似的东西:

window.addEventListener('mousedown', function (evt) {
  if (!componentNode.contains(evt.target)) {
    closeDropdown();
  }
});
Run Code Online (Sandbox Code Playgroud)

然而,该事件被重新定向,所以evt.target永远的元素之外.事件在到达窗口之前会有多个阴影边界,因此似乎无法真正了解用户是否在组件内部单击.

注意:我没有在任何地方使用聚合物 - 我需要一个适用于通用阴影DOM的答案,而不是聚合物特定的黑客.

javascript shadow-dom

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

webstorm忽略.tsconfig.json文件中的'excluded'目录

当尝试在webstorm中编译打字稿文件时,我受到源自文件node_modules夹中文件的编译错误的轰炸.

我的.tsconfig看起来像

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "noImplicitAny": true,
    "sourceMap": true
  },
  "exclude": [
    "node_modules"
  ]
}
Run Code Online (Sandbox Code Playgroud)

我已经'使用.tsconfig.json'签入了preferences > typescript.

我得到的错误来自'reflect-metadata/Reflect'包

TS2304: Cannot find name 'msCrypto'
Run Code Online (Sandbox Code Playgroud)

webstorm typescript

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

类型和GADT

我正在将一个几何库放在haskell中.我不打算发布它,它只是一个项目,我用来提高我的语言知识.

我有一个Local数据类型,具有以下定义

data Local a where
    MkLocal :: (Vectorise a) => ReferenceFrame -> a -> Local a
Run Code Online (Sandbox Code Playgroud)

参考框架是指向框架原点的矢量和表示框架旋转的角度,两者都定义为"绝对"参照系(嘿,它不是现实世界!).一个Vectorise几何是一个具有可逆转变成一个列表Vector.

在我看来,Local可以是Functor如下的实例:

instance Functor Local where
     fmap f geom = localise (frame geom) (f $ local geom)
Run Code Online (Sandbox Code Playgroud)

但是编译器抱怨在定义中没有使用Vectorisable实例进行localize.有没有办法解决这个限制使用无数的GHC扩展之一?

编辑:根据评论中的要求,以下是一些使用的类型

local :: Local a -> a
frame :: Local a -> ReferenceFrame
localise :: (Vectorise a) => ReferenceFrame -> a -> Local a
Run Code Online (Sandbox Code Playgroud)

错误是

No instance for (Vectorise b)
  arising from a use of `localise'
In …
Run Code Online (Sandbox Code Playgroud)

haskell

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

使用本机视图封装时访问嵌套组件的DebugElement

我正在测试如下组件

@Component({
  selector: 'my-component',
  template: `
    <my-nested-component [state]="state"></my-nested-component>
  `,
  encapsulation: ViewEncapsulation.Native
})
export class MyComponent {}
Run Code Online (Sandbox Code Playgroud)

单元测试我的组件时,我想获得对嵌套组件的引用MyOtherComponent.如果my-component没有使用封装,或者它使用了模拟封装,我可以使用:

let fixture = TestBed.createComponent(MyComponent);
let nestedComponent = fixture.debugElement.query(By.directive(MyNestedComponent))
Run Code Online (Sandbox Code Playgroud)

获取对组件的引用.

但在这种情况下,query只需查询组件的轻DOM子项(模仿行为querySelector),因此使用本机视图封装时nestedComponent也是如此null.

你应该如何获得DebugElement嵌套组件的(以及组件实例)的引用?

unit-testing shadow-dom typescript angular

5
推荐指数
2
解决办法
3795
查看次数

分叉并忽略子退出状态

目前正在编写一个守护进程,它会自动更新多个长时间运行的程序。我不关心程序的退出状态,因为孩子退出的唯一方式是在升级时强制退出。不幸的是,我因此创建了大量僵尸进程。

我知道我可以waitpid(0, WNOHANG)用来监听任何孩子的变化(这几乎正是我想要的),但是我也使用 python 多处理模块并行运行多个单独的升级过程,所以长时间运行我可以运行的进程waitpid实际上是终止进程的祖父进程,因此它永远不会收到任何信号。

那么,有没有办法 fork 一个子进程,这样我就不需要检查退出状态,或者我只需要处理我的进程表被僵尸填满?

python linux posix

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