【问题标题】:How to access outer *ngFor value within an inner value="" parameter?如何在内部 value="" 参数中访问外部 *ngFor 值?
【发布时间】:2018-10-23 18:30:16
【问题描述】:

这比解释更容易展示。简而言之,我有一个<ul> 标签,其中包含许多<li> 标签,这些标签是通过在另一个*ngFor 中使用*ngFor 创建的。我想要这段代码做的是列出一周中的几天(例如星期一,星期二,星期三......),然后将它们与一天中的时间(例如早上,中午,下午......)连接起来。很简单,这里是源代码,几乎是完整的。

link to code below

import { Component, NgModule, VERSION } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';

@Component({
    selector: 'my-app',
    template: `
        <ul *ngFor="let d of days">{{ d }}
            <li *ngFor="let dt of daytimes" value="{{d}}">{{d}}: {{ dt }}</li>
        </ul>
    `,
})
export class App {
    days = [
        'Monday',
        'Tuesday',
        'Wednesday',
        'Thursday',
        'Friday',
        'Saturday',
        'Sunday',
    ];

    daytimes = ['Morning', 'Noon', 'Afternoon', 'Evening', 'Night'];
}

@NgModule({
    imports: [BrowserModule],
    declarations: [App],
    bootstrap: [App],
})
export class AppModule {}

好的,问题来了。看这一行:

<li *ngFor="let dt of daytimes" value="{{d}}">

“值”标签被分配给{{d}},d 来自外部*ngFor。如果您运行 plunker,您会看到它作为 &lt;li&gt; 的 innerHTML 值起作用,但是当我尝试将其值分配给“值”参数时,它不起作用。它只是给了我一个零。您可以通过运行 plunker 自己查看这一点,然后右键单击 HTML 并选择“检查”。

为了给大家节省一些时间,这里是显示值的截图。我预计该值为“星期一”,而不是“0”。

关于如何正确格式化以使其正常工作的任何想法?

【问题讨论】:

    标签: angular ngfor


    【解决方案1】:

    修改了代码中的这一行以使其工作&lt;li *ngFor="let dt of daytimes" [attr.value]="d"&gt;{{d}}: {{ dt }}&lt;/li&gt;

    对于属性绑定,angular提供[attr.&lt;attribute-name&gt;]

    //our root app component
    import { Component, NgModule, VERSION } from '@angular/core';
    import { BrowserModule } from '@angular/platform-browser';
    
    @Component({
        selector: 'my-app',
        template: `
            <ul *ngFor="let d of days">{{ d }}
                <li *ngFor="let dt of daytimes" [attr.value]="d">{{d}}: {{ dt }}</li>
            </ul>
        `,
    })
    export class App {
        days = [
            'Monday',
            'Tuesday',
            'Wednesday',
            'Thursday',
            'Friday',
            'Saturday',
            'Sunday',
        ];
    
        daytimes = ['Morning', 'Noon', 'Afternoon', 'Evening', 'Night'];
    }
    
    @NgModule({
        imports: [BrowserModule],
        declarations: [App],
        bootstrap: [App],
    })
    export class AppModule {}
    

    【讨论】:

    • 对您所做更改的解释将有助于配合更正的代码。如果不花很多时间比较,真的很难看出你做了什么。
    猜你喜欢
    • 2019-03-29
    • 1970-01-01
    • 2019-08-10
    • 1970-01-01
    • 2011-01-02
    • 2021-12-31
    • 1970-01-01
    • 2017-06-01
    相关资源
    最近更新 更多