组件中的道具不起作用界面 - Nuxt 和 Vuejs

props in components does not work interface - Nuxt and Vuejs

我无法使用 props 在组件中处理对象的界面。

有谁知道我怎样才能让它发挥作用?

Portaria 接口

export interface PortariaInterface {
  dataEntrada: string
  nfe?: {
    numero: string
}

模板

<Formulario :formulario="formulario" />

Ts

import {PortariaInterface} from '@/models/PortariaInterface'
import { Formulario } from '@/components/portaria'

export default Vue.extend({
  name: 'IndexPage',
  components: { Formulario },
  layout: 'portaria',
  data() {
    return {
      formulario: {} as PortariaInterface
    }
  }
})

组件

<el-col :xs="24" :sm="8" :md="8" :lg="6" :xl="4">
        <el-form-item label="Número NFe">
          <el-input v-model="formulario.nfe?.numero"></el-input>
        </el-form-item>
      </el-col>

export default Vue.extend({
  name: 'Formulario',
  props: ['formulario']
})

错误

TypeError: Cannot read properties of undefined (reading 'numero')

在这种情况下,您有两个绑定,应该使用 Formulario 组件上的 v-model 指令完成,如下所示:

 <Formulario v-model="formulario" />

在此组件中使用 value@input 事件绑定输入:

<el-col :xs="24" :sm="8" :md="8" :lg="6" :xl="4">
        <el-form-item label="Número NFe">
          <el-input :value="numero" @input="onInput"></el-input>
        </el-form-item>
      </el-col>

export default Vue.extend({
  name: 'Formulario',
  props: ['value'],
  computed:{
   numero(){
     return this.value.nfe?.numero
   }

 },
 methods:{
  onInput(val){
    this.$emit('input',val)
  }
}
})