【问题标题】:How to get component properties from main component in Angular2?如何从Angular2中的主要组件获取组件属性?
【发布时间】:2015-07-25 13:28:20
【问题描述】:

一直为此疯狂地挠头。

基本上我想要的只是在我的 index.html 中:

<app hero="iron man"></app>

在我的主 index.html 文件中,然后能够在我的组件类中读取 hero 的值。

在这里待了一个星期,无济于事。这是我无法正常工作的 plunkr:

http://plnkr.co/edit/FNoNSG0JmBWScSbi4KbT?p=preview

【问题讨论】:

    标签: angular


    【解决方案1】:

    我不得不稍微更改您的示例,在我上次检查时(使用 Angular 2.0.0-alpha.21),我在从传递给 bootstrap 方法的同一组件类中检索属性时遇到问题.

    但是,使用稍微修改的示例:

    @Component({
      selector: 'hero',
      properties: {'name':'name'}
    })
    @View({
      template:`<h1>Hero = {{_name}}</h1>`
    })
    class Hero {
      _name: string;
    
      constructor() { 
      };
    
      set name(name){
        this._name = name;
      }
    }
    
    @Component({
      selector: 'app',
    })
    @View({
      template:
      `
        <div>
          <hero name="iron man"></hero>
        </div>
      `,
      directives: [Hero]
    })
    class Application {
      constructor() { };
    }
    
    bootstrap(Application);
    

    然后在你的 HTML 中:

    <app>
       <hero name="iron man" />
    </app>
    

    请注意,在您的构造函数中,_name 将是未定义的。要在您的委托人中使用该属性,您可以注入它:

    class Hero {
       _name: string;
    
       constructor(@Attribute('name') name:string) { 
           this._name = name;
       };
    }
    

    这主要取自我对this question的回答

    【讨论】:

      【解决方案2】:

      感谢您的时间和回复!不幸的是,在您的场景中,您仍然没有检索对象的属性,您只是将第二个对象放入第一个对象并检索这些属性。

      好消息,但对于其他试图弄清楚它的人来说,它已被确认为一个错误!

      https://github.com/angular/angular/issues/1858#event-305799002

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-06-24
        • 1970-01-01
        • 2017-05-11
        • 2021-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多