How can I make is_page_template() workable in child theme?

Your first version of no_sidebar_style() looks fine:

function no_sidebar_style(){
    if (is_page_template('page-templates/page-nosidebar.php')) {
        wp_enqueue_style( 'no-sidebar-style', get_stylesheet_directory_uri().'/css/no-sidebar.css');
    }
}
add_action( 'wp_enqueue_scripts', 'no_sidebar_style', 19);

For debugging, you can use get_page_template() to see the name of the template you’re viewing.