我的应用程序有一个NameService,其中包含名称.
App,Navbar和TheContent有两个子组件引用此服务.只要服务中的名称发生变化,我希望它在两个其他组件中更新.我怎样才能做到这一点?
import {Component, Injectable} from 'angular2/core'
// Name Service
@Injectable()
class NameService {
name: any;
constructor() {
this.name = "Jack";
}
change(){
this.name = "Jane";
}
}
// The navbar
@Component({
selector: 'navbar',
template: '<div>This is the navbar, user name is {{name}}.</div>'
})
export class Navbar {
name: any;
constructor(nameService: NameService) {
this.name = nameService.name;
}
}
// The content area
@Component({
selector: 'thecontent',
template: '<div>This is the content area. Hello user {{name}}. <button (click)=changeMyName()>Change the name</button></div>'
})
export …
Run Code Online (Sandbox Code Playgroud) 我试图从路由器更改页面标题,这可以做到吗?
import {RouteConfig} from 'angular2/router';
@RouteConfig([
{path: '/home', component: HomeCmp, name: 'HomeCmp' }
])
class MyApp {}
Run Code Online (Sandbox Code Playgroud) 我看到有三种方法可以管理Angular2中的变更检测.
观测
@Injectable()
export class TodosService {
todos$: Observable<Array<Todo>>;
private _todosObserver: any;
private _dataStore: {
todos: Array<Todo>
};
constructor(private _http: Http) {
// Create Observable Stream to output our data
this.todos$ = new Observable(observer =>
this._todosObserver = observer).share();
this._dataStore = { todos: [] };
}
}
Run Code Online (Sandbox Code Playgroud)EventEmitter.
@Injectable()
class NameService {
name: any;
nameChange: EventEmitter = new EventEmitter();
constructor() {
this.name = "Jack";
}
change(){
this.name = "Jane";
this.nameChange.emit(this.name);
}
}
Run Code Online (Sandbox Code Playgroud)点规则
export interface Info {
name:string;
}
@Injectable()
class …
Run Code Online (Sandbox Code Playgroud)我有这个代码在主机上设置一个类:
@HostBinding('class.fixed') true;
Run Code Online (Sandbox Code Playgroud)
我想做的是让它成为一个我可以修改的变量类.我怎样才能做到这一点?
我有一个textarea的代码,它与ngModel工作得很好并且实时更新,但我希望my-custom-directive知道绑定到这个textarea的模型何时发生变化.
如何在my-custom-directive中检测此textarea的模型更改?
<textarea my-custom-directive class="green" [(ngModel)]="customertext"></textarea>
Run Code Online (Sandbox Code Playgroud) 我有下面的代码,它工作正常,它做的是ng为重复为列对象中的每列创建一列.
目前,它显示每列中卡片对象的每张卡片.
我想要它只是在列WHERE column.id = card.column中显示卡片
如何修改我的代码才能执行此操作?
import {Input, Output, EventEmitter, Component, Injectable} from 'angular2/core'
import {NgFor} from 'angular2/common'
import {Observable} from 'rxjs/Observable';
interface Card {
id?: number;
title?: string;
column?: number;
}
@Injectable()
export class DataService {
cards$: Observable<Array<Card>>;
private _cardsObserver: any;
private _dataStore: Array<Card>;
constructor(){
this._dataStore = [
{id: 1, title: 'Card A', column: 1},
{id: 2, title: 'Card B', column: 2},
{id: 3, title: 'Card C', column: 2}
];
this.cards$ = new Observable(observer =>
this._cardsObserver = observer).share(); …
Run Code Online (Sandbox Code Playgroud) 嗨我有一个受限制的textarea mymodel
.每当您更改textarea中的值时,它都会自动更改模型.
我想要它做的只是在textarea而不是live上模糊更新模型,我该怎么做?
当textarea不在焦点时,我仍然希望模型更改更新textarea.
@Component({
selector: 'app',
template: `<textarea [(ngModel)]="mymodel"></textarea>
<br><br>
{{mymodel}}
`
})
class App {
public mymodel: any = "hello world";
constructor() {}
}
Run Code Online (Sandbox Code Playgroud) 您好,这段代码告诉我当前元素是否具有类。
e.srcElement.className.indexOf('thisClass') === 0
Run Code Online (Sandbox Code Playgroud)
我还如何检查element或其任何父母是否上课?
我有一个输入字段,当modalOpen = true时添加类激活,这很好.
但是,当这个模态显示时,我希望它专注于输入字段?
<div [class.active]="modalOpen">
<input>
</div>
Run Code Online (Sandbox Code Playgroud)