See the codex page for
Retrieve the post content. (Must be used in a Loop)
Emphasis on »Must be used in a Loop«.
To give you a possible solution, you can use
get_post(), for pages and posts, like shown below, to get the post content outside the loop.
$post_id = get_queried_object_id();
$post_obj = get_post( $post_id );
$content = $post_obj->post_content;
There is a pretty interesting comparison by Peter Knight regarding the Differences between using get_post() and WP_Query(). I can't replicate it all, but basically it boils down to: performance and amount of available data. A short not at all conclusive and complete aggregation could be: on the one hand, with
WP_Query you have the meta data too, not the case with
get_post, but on the other hand, with
WP_Query there are four database queries, whereas you have one database query using
get_post. So there definitely are some differences to consider, read the article for more information, which method is right depends on what is needed for the actual use case on hand.