Angular2 / Ionic2:无法执行' setAttribute' on'元素':'()'不是有效的属性名称。

时间:2016-12-23 10:33:43

标签: angular ionic2 angular2-components

我遇到了问题,无论我怎么说,我都不会让我的自定义组件接受我发送的参数。

我尝试了不同的方法,例如{{}},''或没有""但最后我得到相同的错误,如果它编译到模板的点:

无法执行' setAttribute' on'元素':'()'不是有效的属性名称。

我倾向于使用最新版本,这些版本由ionic-cli捆绑(2.1.17):

  • Angular:2.2.1
  • Ionic:2.0.0 - rc.4
  • 打字稿:2.0.9
  • rxjs:5.0.0 - beta.12

基础课是 的替代-helper.ts:

    export class SubstituteHelper {
        number: number;
        kind: string;
    }

将其导入 substitute.ts:

    import {Component, Input} from '@angular/core';
    import {SubstituteHelper} from '../../app/substitute-helper';

     @Component({
        selector: 'substitute',
        templateUrl: 'substitute.html'
     })
     export class SubstituteComponent {
        @Input()
        sub: SubstituteHelper;
     }

然后在 application.ts

中使用它
    import {Component} from '@angular/core';
    import {NavController, NavParams} from 'ionic-angular';
    import {OverviewPage} from "../overview/overview";
    import {SubstituteHelper} from '../../app/substitute-helper';

    @Component({
        selector: 'page-application',
        templateUrl: 'application.html'
    })
    export class ApplicationPage {
        showSubstituteVar: boolean = false;
        subs: Array<SubstituteHelper>;
        subNo: number = 0;

        constructor(public navCtrl: NavController, public navParams: NavParams) {}

        addSubstitute(kind: string) {
            var sub = new SubstituteHelper();
            sub.number = this.subNo;
            sub.kind = kind;
            this.subs.push(sub);
            this.subNo += 1;
        }

HTML-template 文件中,我尝试使用此功能:

    <div *ngIf="subs.length>0">
        <div *ngFor="let substi of subs">
            <substitute [sub]="substi"></substitute>
        </div>
    </div>

2 个答案:

答案 0 :(得分:1)

通过阅读代码和从那里显示的内容来猜测。我发现了两个可能的问题:

  • <div *ngIf="subs && subs.length>0">subs当时可能是undefined
  • subs: SubstituteHelper[] = [](初始化值)

答案 1 :(得分:0)

如果没有 * ngIf (),我会在上面添加一个标记,这就是现在解决此错误的原因。

    <div *ngFor="let substi of subs">
        <substitute [sub]="substi"></substitute>
    </div>