什么是在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支持,但这只是我的假设.
我试图使用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应该取消以前的调用.
我有一个数组,我想过滤..听起来很简单,我知道.但是当我这样做时,我仍然得到整个阵列...
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阅读,
肖恩.
如何获取immutable.js映射的第一个键(不是值)?
基本上 myMap.first()会返回值,但我对关键...感兴趣
我可以先做一个forEach并存储,但必须是一个更好的方法!
没有在文档中看到它,错过它...:/
TX
肖恩
根据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
肖恩
我试图使用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)
但没有太多运气
任何帮助表示赞赏
问候
肖恩
使用打字稿......
public subscribe:(subscribeFunction:(state)=>void)=>()=>void;
Run Code Online (Sandbox Code Playgroud)
我明白了吗?这是一个订阅方法,它将函数作为一个参数,函数类型,并且给定的函数,在调用时会收到一个状态参数,争论函数不会返回任何东西(即:void)...而我最后丢失了()=>()=>空隙
:/?
肖恩
这是我的设置:
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
问候
肖恩
自从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
肖恩
我想知道使用其中一种比另一种有什么优点或缺点:
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 在下一个区域循环检查时更新,那么为什么要使用其中一个而不是另一个呢?