【发布时间】:2018-09-24 10:32:27
【问题描述】:
我正在尝试使用一些我以前没有使用过的技术,所以我正在使用 Visual Studio Vue 项目模板。我有LoginDialog 和LoginPanel 组件,我正在尝试让LoginPanel 中的“登录”按钮在LoginDialog 上设置“可见”属性的语法正确。
// Login Dialog .ts
import Vue from 'vue';
import { Component } from 'vue-property-decorator';
@Component
export default class LoginDialogComponent extends Vue {
visible: boolean = false
}
// Login Panel .ts
import Vue from 'vue';
import { Component } from 'vue-property-decorator';
import { LoginDialogComponent } from '../loginDialog/logindialog'
@Component
export default class LoginPanelComponent extends Vue {
show() {
LoginDialogComponent.visible = true
}
}
但是,在浏览器中,我收到一条关于 import { LoginDialogComponent } from '../loginDialog/logindialog' 行的错误提示
TS2305:模块“ClientApp/components/loginDialog/logindialog”没有导出成员“LoginDialogComponent”
我注意到LoginDialogComponent 类有export 关键字,这表明它已被导出,而visible 成员不允许导出关键字。知道我在这里搞砸了什么吗?
编辑
我的另一个想法是我可能需要在我的 app.ts 文件中连接这些东西,定义为:
import Vue from 'vue';
import { Component } from 'vue-property-decorator';
@Component({
components: {
MenuComponent: require('../navmenu/navmenu.vue.html'),
LoginPanelComponent: require('../loginPanel/loginpanel.vue.html'),
LoginDialogComponent: require('../loginDialog/logindialog.vue.html')
}
})
export default class AppComponent extends Vue {
}
我不能 100% 确定它在这里做什么 - 这些组件列表是否创建了它们引用的类的实例?如果是这种情况,我想我必须将Dialog 组件传递给Panel 组件,或者在App 组件中引用Dialog,然后传递那个进入Panel?
【问题讨论】:
-
不要在
import { LoginDialogComponent }中使用大括号,使用import LoginDialogComponent代替默认导出的模块 -
啊,可能就是这样!它消除了编译错误,但是当我尝试
LoginDialogComponent.visible = true时,然后Property 'visible' does not exist on type 'typeof LoginDialogComponent。有没有办法访问导入的实例?
标签: typescript vue.js vue-component