小编bor*_*net的帖子

在angular2(2个差异方式)文档中访问本机元素的正确方法是什么是稀缺的

什么是在angular2(2 diff方式)中访问本机元素的正确方法,所以我看到使用的代码:

constructor(ele: ElementRef) {
    let myEl = ele.nativeElement;
    // do some work on myEl such as jQuery(myEl).hide()
    ...
Run Code Online (Sandbox Code Playgroud)

以及通过BrowserDomAdapter使用本机dom的代码:

constructor(viewContainer:ViewContainerRef) {
   let dom = new BrowserDomAdapter();
   let el = viewContainer.element.nativeElement; 
   let myEle = dom.getElementsByClassName(el, element)[0];
   // or jQuery(myEle).hide()
   ...
Run Code Online (Sandbox Code Playgroud)

我想知道什么是Pro/Cons和"正确"的做事方式.不幸的是,文档似乎仍然很少.

我假设后者会通过界面给你WebWorkers支持,但这只是我的假设.

angular

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

Angular2:switchMap不取消之前的http调用

我试图使用switchMap取消Angular2中以前的任何http调用.代码基本上是

var run = ():Observable<any> => {
        var url = 'http://...'
        return this._http.get(url)
            .map(result => {
                return var xmlData:string = result.text()

            });
    }


    function pollTasks() {
        return Observable.of(1)
            .switchMap(() => run())
            .map(res => res)
    }

    // caller can do subscription and store it as a handle:
    let tasksSubscription =
        pollTasks()
            .subscribe(data => {
                console.log('aa'+data)
            });
Run Code Online (Sandbox Code Playgroud)

所以我连续几次调用整个源并收到几个回复(即:aa + data)

我的印象是switchMap应该取消以前的调用.

rxjs typescript angular

15
推荐指数
3
解决办法
9816
查看次数

如何过滤RXJS ArrayObservable?

我有一个数组,我想过滤..听起来很简单,我知道.但是当我这样做时,我仍然得到整个阵列...

constructor(http:Http) {
    this._val = Math.random();
    let s = http.get('https://secure.digitalsignage.com/Digg');
    s.map(s => {
        let news = JSON.parse(s._body);
        return Rx.Observable.fromArray(news);
    }).filter(function(data) {
        console.log('all array ' + data);
        return true;
    }).subscribe(function (v) {
        console.log(v);
    });
}
Run Code Online (Sandbox Code Playgroud)

所以在console.log中('all array'+ data); 我得到整个数组而不是单个数组成员的流,为什么?

这是调试快照:

在此输入图像描述

我知道我并不疯狂,因为这可以按预期工作:

 Rx.Observable.fromArray([1, 2, 3, 4, 5]).filter(function (v) {
        if (v < 3)
            return true
        return false;
    }).subscribe(function (v) {
        console.log(v);
    })
Run Code Online (Sandbox Code Playgroud)

是什么赋予了?

tx阅读,

肖恩.

rxjs angular

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

如何获取immutable.js映射的第一个键(不是值)?

如何获取immutable.js映射的第一个键(不是值)?

基本上 myMap.first()会返回值,但我对关键...感兴趣

我可以先做一个forEach并存储,但必须是一个更好的方法!

没有在文档中看到它,错过它...:/

TX

肖恩

immutable.js

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

如何使用WebStorm调试Webpack-dev-server(在内存中)?

根据WebStorm,它们要求我们根据以下内容中指定的dist目录进行调试:https://blog.jetbrains.com/webstorm/2015/09/debugging-webpack-applications-in-webstorm/

但是,根据Webpack建议的开发过程,我们应该运行webpack-dev-server,所以它的所有内存都在:

webpack-dev-server -inline -progress -colors -display-error-details -display-cached -hot -port = 3000

所以没有dist目录,这个例子发布了@:https://blog.jetbrains.com/webstorm/2015/09/debugging-webpack-applications-in-webstorm/

有没有办法让webpack-dev-server使用dist dir,这样可以将WebStorm映射到它,这样我们就可以使用源映射进行实时调试了?

仅供参考我这是我用来测试的项目:

https://github.com/ocombe/ng2-webpack

TX

肖恩

intellij-idea webstorm webpack angular

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

如何使用Webpack和Angular2包含外部css文件?

我试图使用Webpack在Angular2中添加一个CSS文件的外部引用.我的css被定义为

{ test: /\.css$/, loader: "style-loader!css-loader" },
Run Code Online (Sandbox Code Playgroud)

在我的webpack.config.js文件中,我可以在打字脚本文件的头部中加载css:

require("./styles/style.css");
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试在组件内部加载CSS文件时,如下所示:

@Component({
selector: 'todo-list',
template: `
            <section class="todoapp">                 
            </section>
`,
styles: [require('./Todolist.css')], // <--------------
directives: [TodoItem],
providers: [TodosService]
...
Run Code Online (Sandbox Code Playgroud)

我得到一个错误:EXCEPTION:TypeError:s.replace不是一个函数

我还尝试通过以下方式加载CSS:

styles: [require('style-loader!css-loader!./Todolist.css')]
Run Code Online (Sandbox Code Playgroud)

但没有太多运气

任何帮助表示赞赏

问候

肖恩

typescript webpack angular

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

你能通过打字稿解释这个奇怪的ES6箭头功能吗?

使用打字稿......

public subscribe:(subscribeFunction:(state)=>void)=>()=>void;
Run Code Online (Sandbox Code Playgroud)

我明白了吗?这是一个订阅方法,它将函数作为一个参数,函数类型,并且给定的函数,在调用时会收到一个状态参数,争论函数不会返回任何东西(即:void)...而我最后丢失了()=>()=>空隙

:/?

肖恩

typescript ecmascript-6

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

Angular 2 Router错误,Route配置应该只包含一个"component","loader"或"redirectTo"属性

这是我的设置:

import {bootstrap} from 'angular2/platform/browser';
import {Component} from 'angular2/core';
import {LocationStrategy, APP_BASE_HREF, HashLocationStrategy, ROUTER_DIRECTIVES, Router, RouteConfig, ROUTER_PROVIDERS} from 'angular2/router';
import {HomeComponent} from "../components/HomeComponent";
import {provide} from "angular2/core";

@Component({
    selector: 'app',
    template: `<a [routerLink]="['/Home']">Home</a>
              <router-outlet></router-outlet>`,
    directives: [ROUTER_DIRECTIVES]
})
@RouteConfig([
    { path: '/', component: HomeComponent, name: 'HomeComponent' }
])
class RootComponent {
    constructor(router:Router) {

    }
}

bootstrap(RootComponent, [ROUTER_PROVIDERS, provide(LocationStrategy, {useClass: HashLocationStrategy})
    , provide(APP_BASE_HREF, {useValue: '/'})]);
Run Code Online (Sandbox Code Playgroud)

我一直得到这个错误,任何帮助表示赞赏

在此输入图像描述

我正在使用最新的Beta.0

问候

肖恩

angular

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

angular2:错误:(62,33)TS2339:类型'typeof Injector'上不存在属性'resolveAndCreate'

自从ng2 beta 17我得到:错误:(62,33)TS2339:属性'resolveAndCreate'在类型'typeof Injector'上不存在.

  var injector = Injector.resolveAndCreate(
        [
            TodoService,
            TodoAction,
            HTTP_PROVIDERS,
            TodoStatsModel,
            provide(CommBroker, {useClass: CommBroker}),
            provide(AppStore, {useValue: this.appStore})
        ]);
Run Code Online (Sandbox Code Playgroud)

我找不到如何修复的例子.任何帮助表示赞赏

regadrs

肖恩

angular

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

在Angular2中,使用zone.run与changeDecotor.markForCheck()的优点

我想知道使用其中一种比另一种有什么优点或缺点:

 constructor(private app:ApplicationRef, private ref:ChangeDetectorRef) {
    this.ref.markForCheck();
    // OR
    this.ref.detectChanges()  
    // will do same thing?
 ...
Run Code Online (Sandbox Code Playgroud)

与

zone.run

(() => doSomething())
    ...
Run Code Online (Sandbox Code Playgroud)

与

  app.tick();
Run Code Online (Sandbox Code Playgroud)

它们本质上都会标记组件以进行检查和更新/重绘 UI。

我知道app.tick()会对整个应用程序执行此操作,但在我的测试中它实际上并没有强制 UI 更新。

zone.run两者markforCheck都强制 UI 在下一个区域循环检查时更新,那么为什么要使用其中一个而不是另一个呢?

angular

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