class MyComponent {
    models = input<MyModel[]>([]);
    selectedId = signal<number | null>(null);

    constructor() {
        effect(() => { // reset selection
            this.models();
            this.selectedIds.set(null);
        });
    }

    select(id: number) {
        this.selectedId.set(id);
    }
}
class MyComponent {
    models = input<MyModel[]>([]);
    selectedId = computed(() => {
        this.models();
        return signal<number | null>(null);
    });

    select(id: number) {
        this.selectedId().set(id);
    }
}
class MyComponent {
    models = input<MyModel[]>([]);
    state = computed(() => {
        return {
            models: this.models(),
            selectedId: signal<number | null>(null),
        };
    });

    select(id: number) {
        this.state().selectedId.set(id);
    }
}