This is my Interface / Type
export interface Employee {
id: number;
name: string;
}
export type EmployeesMap = Map<number, Employee>;
This is my Service
class EmployeeService {
employees$: Observable<Employee[]> = of([
{
id: 1,
name: 'Joe',
},
{
id: 2,
name: 'Mel',
},
]);
employeesMap$: Observable<EmployeesMap> = this.employees$.pipe(
map((employees) => {
const map: [number, Employee][] = employees.map((employee) => [
employee.id,
employee,
]);
const employeeMap: EmployeesMap = new Map(map);
return employeeMap;
})
);
}
This is my Child Component
@Component({
selector: 'app-child',
standalone: true,
imports: [CommonModule],
template: `{{employees | json}}<br>{{employeesMap | json}}`,
})
export class ChildComponent {
@Input() employees: Employee[] = [];
@Input() employeesMap: EmployeesMap = new Map();
}
This is my Parent Component
@Component({
selector: 'my-app',
standalone: true,
imports: [CommonModule, ChildComponent],
template: `
<h1>Hello from Angular!</h1>
<app-child
<!-- THIS WORKS... -->
[employees]="(employees$ | async) ?? []"
<!-- THIS ERRORS... -->
[employeesMap]="(employeesMap$ | async) ?? {}"
/>
`,
})
Stackblitz: https://stackblitz.com/edit/stackblitz-starters-mhjnga?file=src%2Fmain.ts
I get the following error: Type 'EmployeesMap | {}' is not assignable to type 'EmployeesMap' Type '{}' is missing the following properties from type 'Map<number, Employee>': clear, delete, forEach, get, and 8 more.
Appreciate any help