Preventing wire:model from overwriting a default value set from an event?

I’have this component, for which, wire:model is used to bind to email and open is called trough an event from another component. What I’m sadly seeing, is the $kid_id variable that’s set in the open event, be reset once I start typing, to the default 1… Is there any way to avoid this reset?

<?php

namespace App\Http\Livewire;

use App\Kid;
use Livewire\Component;

class FulfillmentConfirmationModal extends Component
{

public $isOpen = false;
public $email = "";

protected $listeners = ['showModal' => 'open', 'closeModal' => 'close', 'confirm' => 'fulfill'];

private $kid_id = 1;

public function fulfill($id) {
    $kid = Kid::find($id);
    dump($kid);
}

public function close() {
    $this->isOpen = false;
}

public function open($selected_kid) {
    $this->kid_id = $selected_kid;
    $this->isOpen = true;
}

public function render()
{
    return view('livewire.fulfillment-confirmation-modal', [
        "kid" => Kid::find($this->kid_id),
    ]);
}
}

Can you add wire ignore to the existing markup? https://laravel-livewire.com/docs/third-party-libraries/#select2

wire:ignore

or

wire:ignore.self

That makes the entire component not show up on the open event. Not what I want

@calebporzio Re-surfacing this as I now have the time to deal with this. Do you have any ideas on what to do in this case?

Changing the visibility of $kid_id to from private to public should fix it. Private and protected variables are not persisted through requests, that’s why it’s going back to 1.

Thanks! That worked!