<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <title>AulosStructuralDirective</title>
  <base href="/">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
<body>
  <app-root></app-root>
</body>
</html>
<h1>{{title}}</h1>
<aulos-array-component>
</aulos-array-component>
import { Component, Input } from "@angular/core";

@Component({
  selector: "aulos-param-component",
  templateUrl: "./aulos.param.component.html",
  styleUrls: ["./aulos.param.component.css"]
})

export class AulosParamComponent {

  @Input() labelTitle: string;
  @Input() inputBoxValue: string;

}
import { Component, Directive, OnInit, ContentChild } from "@angular/core";

@Component({
  selector: "app-root",
  templateUrl: "./app.component.html",
  styleUrls: ["./app.component.css"],

})

export class AppComponent implements OnInit {
  title = "AulosStructuralDirective";

  ngOnInit() {
    console.log("AppComponent initialized");
  }

}
import { BrowserModule } from "@angular/platform-browser";
import { NgModule }      from "@angular/core";

import { AppComponent }  from "./app.component";
import { AulosParamComponent }    from "./aulos.param.component";
import { AulosArrayComponent }    from "./aulos.array.component";

import { DataService }   from "./data.service";

@NgModule({
  declarations: [
    AppComponent,
    AulosParamComponent,
    AulosArrayComponent,
  ],

  imports: [
    BrowserModule,
  ],

  exports: [
  ],

  providers: [
    DataService
  ],

  bootstrap: [AppComponent]
})

export class AppModule { }
<p>title: {{labelTitle}} </p> 
<p>value: {{inputBoxValue}} </p>
import { Component, OnInit } from "@angular/core";

import { DataService } from "./data.service";
import { InputData } from "./input.data";

@Component({
  selector: "aulos-array-component",
  templateUrl: "./aulos.array.component.html",
  styleUrls: ["./aulos.array.component.css"],

  providers: [DataService]
})

export class AulosArrayComponent implements OnInit {
    inputDataArray: InputData[];

    constructor(
        private DataService: DataService) { }

    getData(): void {
        this.DataService.getArrayOfInputData()
            .then(inputDataArray => this.inputDataArray = inputDataArray);
        console.log("getData done"); 
    }

    ngOnInit(): void {
        this.getData();
        console.log("ngOnInit done");
    }
}
<ul class="array-component-list" *ngFor="let single of inputDataArray">
    <aulos-param-component [labelTitle]="single.title" [inputBoxValue]="single.value" ></aulos-param-component>
</ul>
import { TestBed, async } from '@angular/core/testing';

import { AppComponent } from './app.component';

describe('AppComponent', () => {
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent
      ],
    }).compileComponents();
  }));

  it('should create the app', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app).toBeTruthy();
  }));

  it(`should have as title 'app'`, async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    expect(app.title).toEqual('app');
  }));

  it('should render title in a h1 tag', async(() => {
    const fixture = TestBed.createComponent(AppComponent);
    fixture.detectChanges();
    const compiled = fixture.debugElement.nativeElement;
    expect(compiled.querySelector('h1').textContent).toContain('Welcome to app!!');
  }));
});
export class InputData {
    title: string;
    value: string;
}
import { Injectable }      from "@angular/core";

import { InputData }       from "./input.data";
import { INPUTDATALIST }   from "./mock-inputdata";

@Injectable()
export class DataService {
    getArrayOfInputData(): Promise<InputData[]> {
        return Promise.resolve(INPUTDATALIST);
        
    }
}
import { InputData } from "./input.data";

export const  INPUTDATALIST: InputData[] = [
    { title: "parameter 1", value: "x" },
    { title: "parameter 2", value: "y" },
    { title: "parameter 3", value: "z" }

];
import { enableProdMode } from '@angular/core';
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';

import { AppModule } from './app/app.module';
import { environment } from './environments/environment';

if (environment.production) {
  enableProdMode();
}

platformBrowserDynamic().bootstrapModule(AppModule);