ng2- 组件 属性 绑定不起作用
ng2- component property binding not working
我正在开发一个 Angular 2 应用程序,我在其中创建了一个名为 JobComponent
的组件和一个名为 candidate_types
的 属性 并尝试绑定 属性 使用属性绑定到 NgbdTypeaheadBasic
组件,但它不起作用,我不知道为什么,下面是文件。
job.module.ts
import { NgbdTypeaheadBasic } from './typehead.component';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { JobComponent } from './job.component';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ JobComponent, NgbdTypeaheadBasic],
bootstrap: [ JobComponent ]
})
export class JobModule { }
job.component.ts
import { Component } from '@angular/core';
import {Http, Response} from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
@Component({
selector : 'job_block',
template : "<ngbd-typeahead-basic [options]='candidate_types'></ngbd-typeahead-basic>",
})
export class JobComponent {
candidate_types:any=['air', 'ocean'];
}
typehead.component.ts
import {Component,Input} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
@Component({
selector: 'ngbd-typeahead-basic',
templateUrl: './partials/third-party/typehead.html'
})
export class NgbdTypeaheadBasic {
public model: any;
states:any;
@Input() options:any;
constructor() { console.log(this.options); }
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.map(term => term.length < 2 ? []
: this.states.filter(v => new RegExp(term, 'gi').test(v)).splice(0, 10));
}
typehead.html
<input type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="search" />
当我启动应用程序时,所有组件都正确呈现,没有任何错误,但我得到 undefined
for console.log(this.options);
我正在尝试实施 Angular 2 Bootstrap Typehead 组件:
https://ng-bootstrap.github.io/#/components/typeahead
我参考过的:
你得到 undefined
因为你试图在 constructor
中打印 options
并且考虑到它是 @Input()
,它还没有从父组件传递片刻。实施 OnInit
并在那里打印它,您会看到它会起作用:
import { OnInit } from '@angular/core';
export class NgbdTypeaheadBasic implements OnInit {
ngOnInit() {
console.log(this.options);
}
}
你应该看看 Angular 2 Lifecycle Hooks。
我正在开发一个 Angular 2 应用程序,我在其中创建了一个名为 JobComponent
的组件和一个名为 candidate_types
的 属性 并尝试绑定 属性 使用属性绑定到 NgbdTypeaheadBasic
组件,但它不起作用,我不知道为什么,下面是文件。
job.module.ts
import { NgbdTypeaheadBasic } from './typehead.component';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { JobComponent } from './job.component';
@NgModule({
imports: [ BrowserModule, FormsModule ],
declarations: [ JobComponent, NgbdTypeaheadBasic],
bootstrap: [ JobComponent ]
})
export class JobModule { }
job.component.ts
import { Component } from '@angular/core';
import {Http, Response} from '@angular/http';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/toPromise';
@Component({
selector : 'job_block',
template : "<ngbd-typeahead-basic [options]='candidate_types'></ngbd-typeahead-basic>",
})
export class JobComponent {
candidate_types:any=['air', 'ocean'];
}
typehead.component.ts
import {Component,Input} from '@angular/core';
import {Observable} from 'rxjs/Observable';
import 'rxjs/add/operator/map';
import 'rxjs/add/operator/debounceTime';
import 'rxjs/add/operator/distinctUntilChanged';
@Component({
selector: 'ngbd-typeahead-basic',
templateUrl: './partials/third-party/typehead.html'
})
export class NgbdTypeaheadBasic {
public model: any;
states:any;
@Input() options:any;
constructor() { console.log(this.options); }
search = (text$: Observable<string>) =>
text$
.debounceTime(200)
.distinctUntilChanged()
.map(term => term.length < 2 ? []
: this.states.filter(v => new RegExp(term, 'gi').test(v)).splice(0, 10));
}
typehead.html
<input type="text" class="form-control" [(ngModel)]="model" [ngbTypeahead]="search" />
当我启动应用程序时,所有组件都正确呈现,没有任何错误,但我得到 undefined
for console.log(this.options);
我正在尝试实施 Angular 2 Bootstrap Typehead 组件:
https://ng-bootstrap.github.io/#/components/typeahead
我参考过的:
你得到 undefined
因为你试图在 constructor
中打印 options
并且考虑到它是 @Input()
,它还没有从父组件传递片刻。实施 OnInit
并在那里打印它,您会看到它会起作用:
import { OnInit } from '@angular/core';
export class NgbdTypeaheadBasic implements OnInit {
ngOnInit() {
console.log(this.options);
}
}
你应该看看 Angular 2 Lifecycle Hooks。